Swift로 🍏 UI XCTest 기반 잘 다지는 법 #1 - 테스트 케이스
반응형
❗ 처음 세우는 기둥이 중요하다
뭐든지 처음 기반을 잘 세워두면 이후가 안정적이고 편해진다. iOS/macOS 어플리케이션의 테스팅 프레임워크인 XCTest
는 UI 테스팅도 가능하다. Xcode에서는 레코딩 툴도 갖춰져 있어, 자동으로 테스트 코드를 짜주는 기능도 있다. (물론 이 코드는 그리 안정적인 코드는 되지 못하지만 레퍼런스 정도로 사용하기에 좋다.)
🧱 첫 기둥이 되는 Base 테스트 케이스
XCTestCase
라이브러리를 사용하여 베이스를 잘 셋업 해놓으면, 추후 여러 테스트들을 관리하기가 수월해진다.
class BaseTestCase: XCTestCase {
override func setUp() {
super.setUp()
// 시스템 알림창이 뜰 경우를 대비해 핸들링 코드를 셋업에 입력해준다.
_ = addUIInterruptionMonitor(withDescription: "systemAlertHandlerDescription") { (alert) -> Bool in
if (alert.buttons["Allow"].exists) {
alert.buttons["Allow"].tap()
} else if (alert.buttons["OK"].exists) {
alert.buttons["OK"].tap()
}
return true
}
continueAfterFailure = false
// 어플리케이션의 상태에 따라 재시작 상태를 원하는 컨디션에 맞춰 컨트롤 한다.
if isAppLaunched {
if shouldRestartApp {
app.terminate()
app.launch()
isAppLaunched = true
}
} else {
app.launch()
isAppLaunched = true
}
}
// 각 테스트 종료 시, 스크린샷을 찍어 기록을 남긴다.
override func tearDown() {
let screenshot = XCUIScreen.main.screenshot()
let fullScreenshotAttachment = XCTAttachment(screenshot: screenshot, quality: .low)
fullScreenshotAttachment.lifetime = .deleteOnSuccess
add(fullScreenshotAttachment)
}
}
extension XCTestCase {
private struct State {
static var appLaunched = false
static var restartApp = false
}
var isAppLaunched: Bool {
get { return State.appLaunched }
set(launched) { State.appLaunched = launched }
}
var shouldRestartApp: Bool {
get { return State.restartApp }
set(restart) { State.restartApp = restart }
}
}
위와 같이 설정을 해주면, 테스트 사이 마다 어플리케이션 재시작 혹은 원하는 액션을 넣을 수도 있다. 또, 스크린샷을 포함해 테스트 실패 시 디버깅이 쉽도록 설정된다.
추가적으로, 테스트 Pre-action에 시뮬레이터 클린업 및 재시작을 설정해 놓는 것 또한 추천한다:
// iOS 시뮬레이터를 모두 종료하고 리셋한다.
killall "Simulator" 2> /dev/null; xcrun simctl erase all
killall -9 "Simulator"
반응형
'👨🏻💻 QA이야기 > 📱 모바일자동화' 카테고리의 다른 글
Kotlin으로 ☕ Espresso UI 테스트 기반 잘 다지는 법 #1 - 테스트 케이스 (0) | 2020.04.12 |
---|---|
Swift로 🍏 UI XCTest 기반 잘 다지는 법 #2 - Action (0) | 2020.04.04 |
🥒 Cucumber 이해하고 잘 쓰는 방법 (0) | 2020.04.03 |
🗳️ QA의 모바일 자동화를 위한 개발환경 (0) | 2020.04.01 |
Appium + Kotlin = 🚀 (2) | 2020.03.31 |
댓글
이 글 공유하기
다른 글
-
Kotlin으로 ☕ Espresso UI 테스트 기반 잘 다지는 법 #1 - 테스트 케이스
Kotlin으로 ☕ Espresso UI 테스트 기반 잘 다지는 법 #1 - 테스트 케이스
2020.04.12 -
Swift로 🍏 UI XCTest 기반 잘 다지는 법 #2 - Action
Swift로 🍏 UI XCTest 기반 잘 다지는 법 #2 - Action
2020.04.04 -
🥒 Cucumber 이해하고 잘 쓰는 방법
🥒 Cucumber 이해하고 잘 쓰는 방법
2020.04.03 -
🗳️ QA의 모바일 자동화를 위한 개발환경
🗳️ QA의 모바일 자동화를 위한 개발환경
2020.04.01