안녕하세요.
iOS Test Case 를 작성하는 방법에 대해서 가볍게 알아보도록 하겠습니다.
주의하세요! 자세한 코드의 설명은 누락되어 있습니다.
전체 소스는 아래 링크를 통해서 확인하실 수 있습니다.
사용되는 언어, Library
- Swift 4.2
- RxSwift
- ReactorKit
- RxDataSources
- SnapKit
이번에 다뤄볼 예제는 총 4가지입니다.
1. UnitTest
2. ReactorKit Test
3. UIView Test
4. XCUIApplication
Application 소개
1. Unit Test
UnitTest를 사용하는 이유는 작은 단위로 검증하기 위해서 입니다.
현재 예제에는 SampleRepository 의 기능을 검증하기 위한 목적으로만 소개합니다.
SampleRepository.search("a") 함수를 호출하면 startWith("a") 의 값을 반환하도록 하는 예제입니다.
let fixture = [
Sample(title: "aaa"),
Sample(title: "abb"),
Sample(title: "acc"),
Sample(title: "bcc")
]
let expect: [Sample] = [
Sample(title: "aaa"),
Sample(title: "abb"),
Sample(title: "acc")
]
TestCase
"a"로 시작하는 title 을 검증합니다.
SampleRepositoryTest.swift
2. ReactorKit Test
ReactorKit 에 대한 이해가 필요하신 분들은 훌륭한 문서를 여기에서 확인하실 수 있습니다.
ReactorKit을 Test 하기 위해 RxExpect 라는 Library가 존재합니다.
TestCase
첫번째 State가 var items: [MySection] == [] 임을 검증합니다.
두번째 State가 .search("a") Action이 실행되면 "a" 로 시작하는 Title을 가지는 items를 검증합니다.
SampleListReactorTest.swift
Reference
3. UIView Test
TestCase
첫번째 TableView에 "aaa" 의 Text 를 가지는 Cell이 있는지 검증합니다.
SampleListViewControllerTest.swift
4. XCUIApplication
tableView.accessibilityIdentifier = "access_tableview"
accessibilityIdentifier 를 지정하여 XCUIApplication으로 부터 접근하는 방법을 소개하는 합니다.
여기에서 내용을 확인하실 수 있습니다.
TestCase
첫번째 access_tableview 인 accessibilityIdentifier를 접근합니다.
두번째 Cell의 Text 중 "aaa" 로 표시되는 Cell을 클릭합니다.
세번째 다음 화면으로 넘어가면서 "aaa" Text 를 검증합니다.
XCUIApplication.swift
Android Test Code 는 아래 글에서 확인하실 수 있습니다.
소중한 시간내어 주셔서 감사합니다.