내일배움캠프 35일차

임클·2025년 4월 18일

내일배움캠프

목록 보기
36/44
post-thumbnail

1. UI 테스트와 단위 테스트의 차이

UI 테스트는 사용자 인터페이스의 흐름과 상호작용을 자동으로 검증하며 앱의 전체적인 동작을 확인한다. 단위 테스트는 코드의 가장 작은 단위인 함수나 메서드의 로직을 분리하여 빠르고 반복적으로 검증한다.

  • UI 테스트
    • 대상: 화면 전환, 버튼 탭, 텍스트 입력 등
    • 실행 속도: 느림
    • 장점: 실제 사용자 시나리오 검증
    • 단점: 유지 보수 비용 높음
  • 단위 테스트
    • 대상: 순수 함수, 연산 로직 등
    • 실행 속도: 빠름
    • 장점: 빠른 피드백, 낮은 비용
    • 단점: UI 흐름 미검증

2. XCTest로 테스트 작성 방법

  1. 테스트 타깃 추가

  2. XCTestCase 서브클래스 생성

  3. setUp(), tearDown() 메서드로 환경 구성 및 해제

  4. 메서드 이름을 test 접두사로 선언

  5. XCTAssert 계열 함수로 검증 예시:

    func testSum() {
        let result = add(2, 3)
        XCTAssertEqual(result, 5)
    }
    

3. TDD의 장점

  • 설계 주도: 테스트를 기반으로 인터페이스를 정의해 구조가 명확해진다.
  • 품질 보증: 구현 시점마다 검증해 버그를 사전에 방지한다.
  • 리팩토링 안전성: 테스트 통과를 통해 리팩토링 후에도 동작을 보장한다.
  • 문서화 역할: 테스트 자체가 코드 사용 예시가 된다.

4. 의존성 주입을 통한 테스트 가능한 코드 작성

  • 생성자 주입: 초기화 시 필요한 의존성을 전달
    class UserService {
        private let apiClient: APIClientProtocol
        init(apiClient: APIClientProtocol) {
            self.apiClient = apiClient
        }
    }
    
  • 프로퍼티 주입: 테스트 시 모의 객체를 주입 가능
  • 메서드 주입: 특정 메서드 호출 시 의존성 전달
  • Protocol 활용: APIClientProtocol처럼 추상화된 인터페이스로 실제와 모의(Mock) 구현을 교체

0개의 댓글