[swift] Quick/Nimble으로 앱의 정상 동작 테스트하기

앱 개발 중 정확한 동작을 확인하고 테스트하기 위해서는 유닛 테스트가 필요합니다. 이를 위해 Swift에서는 Quick과 Nimble이라는 라이브러리를 활용할 수 있습니다. Quick은 BDD(행위 주도 개발) 테스트 프레임워크이며, Nimble은 강력한 매처(matcher) 라이브러리입니다.

이 튜토리얼에서는 Quick과 Nimble을 활용하여 앱의 정상 동작을 테스트하는 방법에 대해 알아보겠습니다.

설치

먼저 Quick과 Nimble을 프로젝트에 추가해야 합니다. CocoaPods를 사용하여 설치할 수 있습니다. Podfile에 다음과 같이 추가합니다:

target 'MyApp' do
  # ...
  # 이미 존재하는 팟들
  
  # Quick, Nimble 추가
  pod 'Quick'
  pod 'Nimble'
end

그런 다음 터미널에서 다음 명령을 실행하여 팟들을 설치합니다:

$ pod install

테스트 작성

이제 테스트를 작성할 준비가 되었습니다. 테스트는 Spec 클래스를 만들고 내부에서 describeit 블록을 사용하여 구성됩니다. describe 블록은 테스트할 대상을 설명하고, it 블록은 실제 테스트 케이스를 작성합니다.

import Quick
import Nimble

class MyViewControllerSpec: QuickSpec {
  override func spec() {
    describe("MyViewController") {
      
      var myVC: MyViewController!
      
      beforeEach {
        // 테스트 환경 설정
        myVC = MyViewController()
      }
      
      it("should have a valid title") {
        // 타이틀이 유효한지 테스트
        expect(myVC.title).to(equal("My App"))
      }
      
      afterEach {
        // 테스트 환경을 정리
        myVC = nil
      }
    }
  }
}

위의 코드에서는 MyViewController 클래스의 타이틀이 “My App”인지 확인하는 테스트를 작성했습니다.

테스트 실행

테스트를 실행하려면 Xcode의 테스트 타겟을 선택하고 Cmd + U를 누르거나, 터미널에서 다음 명령을 실행합니다:

$ xcodebuild test -scheme MyScheme -destination 'platform=iOS Simulator,name=iPhone 11'

위의 명령에서 MyScheme은 프로젝트의 실제 스킴 이름으로 변경해주어야 합니다. 또한 테스트를 실행할 시뮬레이터의 정보를 정확히 입력해야 합니다.

결과 확인

실행된 테스트 결과는 Xcode의 테스트 탭에서 확인할 수 있습니다. 녹색으로 표시된 테스트는 성공한 것이고, 빨간색으로 표시된 테스트는 실패한 것입니다. 실패한 테스트의 경우, 실패한 이유를 자세히 알려주는 메시지가 표시됩니다. 테스트 결과는 다시 실행될 때마다 업데이트되며, 테스트를 성공적으로 통과함으로써 앱이 예상한 대로 동작하는지 확인할 수 있습니다.

마무리

이제 Quick과 Nimble을 사용하여 앱의 정상 동작을 테스트하는 방법에 대해 알아보았습니다. 유닛 테스트를 통해 앱의 각 기능이 예측한 대로 동작하는지 확인할 수 있고, 이를 통해 버그를 미리 발견하고 수정할 수 있습니다.