2020. 3. 9. 14:56ㆍiOS
XCTest Framework
Xcode 프로젝트의 유닛, 성능 및 UI테스트를 생성 및 실행합니다.
XCTest 프레임워크를 사용하여 Xcode의 테스트 워크플로우와 원활하게 통합되는 Xcode프로젝트에 대한 유닛 테스트 코드를 작성합니다.
테스트는 코드 실행 중에 특정 조건이 만족된다고 주장하고 이러한 조건이 만족되지 않는다면 선택적인 메세지를 포함한 테스트 실패를 기록합니다. 또한, 테스트는 성능 회귀를 확인하기 위해 코드 블록의 성능을 측정할 수 있고, 사용자 상호 작용 흐름을 검증하기 위해 응용 프로그램의 UI와 상호 작용할 수 있다.
참고. 회귀분석: 독립변수, 종속변수간의 인과관계가 있는 데이터표본을 토대로 인과관계 즉, 선형함수식으로 표현된 회귀식을 찾고, 표본에 없는 독립변수에 대한 종속변수를 예측하는 시스템
XCTest Class
테스트 생성, 관리 및 실행하기위한 추상적인 기본 클래스입니다.
XCTest클래스는 테스트를 만들고 관리하고 실행하기위헤 XCTestCase 및 XCTestSuite에서 사용하는 공유 기능을 제공합니다.
대부분의 경우, 프로젝트에서 테스트를 정의할때 직접 XCTestCase를 하위 클래스로 분류해야 합니다.
프로퍼티
-
name: String 테스트의 이름
-
testCaseCount: Int 테스트의 경우 수
-
testRun: XCTestRun? XCTest의 특정 실행에 관한 정보를 수집하기 위한 기본 클래스
-
testRunClass: AnyClass? XCTestRun 하위 클래스는 테스트가 실행되면 인스턴스화하여 테스트 결과를 유지합니다.
메소드
-
setUp() 테스트 케이스의 각 테스트 메서드가 호출되기 전 상태를 재설정할 수 있는 기회를 제공합니다.
-
tearDown() 테스트 케이스의 각 테스트 방법이 끝난 후 정리를 수행할 수 있는 기회를 제공합니다.
-
perform(XCTestRun) 특정 테스트를 실행합니다.
-
run() testRunClass에서 특정화된 클래스의 인스턴스를 생성하고, perform(_:)메소드의 파라미터로 전달합니다.
XCTestCase Class
XCTest를 상속받으며, 테스트 케이스, 테스트 방법 및 성능 테스트를 정의하는 기본 클래스입니다.
테스트 케이스는 테스트가 실행되기 전과 후에 선택적으로 설정 및 tearDown이 있는 관련 테스트 메소드 모음입니다. 자세한 내용은 검사 사례 정의 및 검사 방법 정의를 참조하세요.
Do it
override func setUp() {}
override func tearDown() {}
func testExample() {
//환경세팅: 반경300미터 기준 좌표 구분
let currentLocation = CLLocationCoordinate2D(latitude: 37.494, longitude: 127.014)
let data = [["location":[127.014684, 37.495495]], ["location":[127.015250, 37.492313]], ["location":[127.017294, 37.491315]]]
var service = HouseLocationService(with: data)
_ = service.markerForUpdate(currentLocation: currentLocation)
//위치가 변경될 때
let changedLocation = CLLocationCoordinate2D(latitude: 37.493, longitude: 127.017)
let updateResult = service.markerForUpdate(currentLocation: changedLocation)
let removed = updateResult.removedMarker
let added = updateResult.addedMarker
//추가 및 제거결과 예상결과와 비교
let willRemove = [[37.495495, 127.014684]]
let willAdd = [[37.491315, 127.017294]]
let removedAnswerSheet = willRemove.map { CLLocationCoordinate2D(latitude: $0[0], longitude: $0[1] ) }
let addedAnswerSheet = willAdd.map { CLLocationCoordinate2D(latitude: $0[0], longitude: $0[1] ) }
XCTAssert(removed.first?.position == removedAnswerSheet.first && added.first?.position == addedAnswerSheet.first)
}
Command + U 하여 결과가 예상과 동일하면 다음과 같이 성공이!
만약 결과가 예상과 일치하지 않는다면~
와 함께 fail 난 곳을 알려준다
'iOS' 카테고리의 다른 글
[iOS] Open Source - Autolayout (0) | 2020.03.11 |
---|---|
[iOS] Open Source (0) | 2020.03.10 |
[iOS] UIImagePickerController (0) | 2020.02.09 |
[iOS] App States (0) | 2020.02.04 |
[iOS] Core Location Framework (0) | 2020.02.02 |