[swift] Quick/Nimble으로 앱의 화면 전환 테스트하기

앱 개발을 진행할 때, 화면 전환은 중요한 부분입니다. 이 화면 전환을 테스트하기 위해서는 Quick과 Nimble라는 두 가지 유용한 프레임워크를 사용할 수 있습니다. 이 블로그 포스트에서는 Quick/Nimble을 사용하여 앱의 화면 전환을 테스트하는 방법에 대해 알아보겠습니다.

Quick이란?

Quick은 iOS 앱 개발을 위한 BDD(Behavior-Driven Development) 프레임워크입니다. Quick을 사용하면 테스트를 조직화하고 가독성 있게 작성할 수 있습니다. Quick은 XCTest 프레임워크를 기반으로 하며, 보다 간결하고 직관적인 구문을 제공합니다.

Nimble이란?

Nimble은 단언문(assertion)을 작성하기 위한 라이브러리로, XCTest 서브클래스의 단언문을 사용하기 쉽고 가독성 있게 변경합니다. Nimble은 테스트 결과를 자세하게 출력함으로써 디버깅을 용이하게 해줍니다.

앱의 화면 전환 테스트

이제 실제로 화면 전환을 테스트하는 방법에 대해 알아보겠습니다.

우선, Quick과 Nimble을 설치하기 위해 프로젝트의 Podfile에 다음과 같이 추가합니다:

target '<Your Target Name>' do
  use_frameworks!
  pod 'Quick'
  pod 'Nimble'
end

설치가 완료되었다면, 아래와 같이 테스트 코드를 작성할 수 있습니다:

import Quick
import Nimble

@testable import YourProject

class ScreenTransitionSpec: QuickSpec {
   override func spec() {
       describe("화면 전환 테스트") {
           context("버튼을 눌렀을 때") {
               it("화면이 전환되어야 한다") {
                   let viewController = ViewController()
                   viewController.loadViewIfNeeded()
                   
                   // 버튼을 눌러 화면 전환
                   viewController.buttonTapped(nil)
                   
                   expect(viewController.isPresentingAnotherScreen).to(beTrue())
               }
           }
       }
   }
}

위의 예시에서는 ViewController 클래스의 buttonTapped 메서드를 호출하여 화면 전환을 시뮬레이션하고, isPresentingAnotherScreen 프로퍼티를 검증하는 테스트를 수행합니다.

테스트를 실행하려면 터미널에서 다음 명령을 실행합니다:

xcodebuild test -workspace YourProject.xcworkspace -scheme YourProjectTests -destination 'platform=iOS Simulator,name=iPhone 12,OS=15.0'

위 명령에서 YourProject.xcworkspaceYourProjectTests는 각각 프로젝트의 워크스페이스와 테스트 타겟에 맞게 변경해야 합니다. 또한, 시뮬레이터 버전(iPhone 12,OS=15.0)도 필요에 따라 변경해야 합니다.

마무리

이제 Quick과 Nimble을 사용하여 앱의 화면 전환을 테스트하는 방법에 대해 알아보았습니다. 화면 전환은 사용자 경험의 핵심이므로 정확하게 동작하는지 확인하는 것은 매우 중요합니다. Quick과 Nimble은 간결하고 가독성 있는 테스트 코드 작성을 도와주므로, 앱 개발 과정에서 활용해보세요.

참고 자료