Objective-C Language
Xcode를 이용한 단위 테스트
수색…
비고
종속성 :
- 응용 프로그램에서 타사 라이브러리 또는 코코아 포드를 사용하는 경우 해당 라이브러리 또는 포드도 테스트 용으로 설치해야합니다.
- 테스트 클래스 (테스트 슈트)는 XCTestCase를 확장합니다.
시작하기 전에 솔질을하십시오 :
모든 테스트 클래스에는 일반적인 setUp & tearDown의 두 가지 메소드가 있습니다.
setUp은 모든 테스트 케이스 앞에 실행되며 & tearDown은 모든 테스트 케이스 다음에 실행됩니다.
테스트 케이스는 사전 순으로 실행됩니다.
테스트 기반 개발에서는 먼저 더미 테스트 데이터를 만드는 것이 좋습니다.
테스트 케이스 메소드는 "test"키워드로 시작합니다.
테스트 메소드는 매개 변수를 허용하지 않고 값도 반환하지 않습니다.
충수:
예상 결과와 실제 결과를 비교하는 몇 가지 다른 방법이 있습니다. 이러한 방법 중 일부는 다음과 같습니다.
- XCTAssertNil (expression, comment)은 표현식! = nil이면 실패를 생성합니다.
- expression = nil 인 경우 XCTAssertNotNil (expression, comment)이 실패를 생성합니다.
- XCTAssert (expression, comment)는 expression == false 인 경우 오류를 생성합니다.
- XCTAssertTrue (expression, comment)는 expression == false 인 경우 오류를 생성합니다.
- XCTAssertFalse (expression, comment)는 표현식! = false이면 실패를 생성합니다.
- XCTAssertEqualObjects (expression1, expression2, comment)는 expression1이 expression2와 같지 않으면 오류를 생성합니다.
- XCTAssertEqualObjects (expression1, expression2, comment)는 expression1이 expression2와 같으면 실패를 생성합니다.
- XCTAssertNotEqual (expression1, expression2, comment)은 expression1 == expression2 인 경우 오류를 생성합니다.
- XCTAssertEqual (expression1, expression2, comment)은 expression1! = expression2 인 경우 오류를 생성합니다.
- XCTAssertGreaterThanOrEqual (expression1, expression2, comment)은 (expression1 <expression2) 일 때 오류를 생성합니다.
코드 블록 또는 일부 메소드 테스트 :
- 테스트 할 메서드가 들어있는 클래스를 가져옵니다.
- 더미 데이터로 작업을 수행하십시오.
- 이제 연산 결과를 예상 결과와 비교하십시오.
- (void)testReverseString{
NSString *originalString = @"hi_my_name_is_siddharth";
NSString *reversedString = [self.someObject reverseString:originalString];
NSString *expectedReversedString = @"htrahddis_si_eman_ym_ih";
XCTAssertEqualObjects(expectedReversedString, reversedString, @"The reversed string did not match the expected reverse");
}
필요한 경우 테스트 데이터에 더미 데이터를 입력 한 다음 예상 결과와 실제 결과를 비교합니다.
비동기 코드 블록 테스트 :
- (void)testDoSomethingThatTakesSomeTime{
XCTestExpectation *completionExpectation = [self expectationWithDescription:@"Long method"];
[self.someObject doSomethingThatTakesSomeTimesWithCompletionBlock:^(NSString *result) {
XCTAssertEqualObjects(@"result", result, @"Result was not correct!");
[completionExpectation fulfill];
}];
[self waitForExpectationsWithTimeout:5.0 handler:nil];
}
- 필요한 경우 더미 데이터를 테스트중인 메소드에 공급하십시오.
- 테스트는 타임 아웃에 도달하거나 모든 기대치가 충족 될 때까지 실행 루프를 실행하면서 여기서 일시 중지됩니다.
- 시간 초과는 비동기 블록이 응답 할 것으로 예상되는 시간입니다.
코드 블록의 성능 측정 :
1. 동기식 메소드의 경우 :
- (void)testPerformanceReverseString {
NSString *originalString = @"hi_my_name_is_siddharth";
[self measureBlock:^{
[self.someObject reverseString:originalString];
}];
}
2. 비동기 메소드의 경우 :
- (void)testPerformanceOfAsynchronousBlock {
[self measureMetrics:@[XCTPerformanceMetric_WallClockTime] automaticallyStartMeasuring:YES forBlock:^{
XCTestExpectation *expectation = [self expectationWithDescription:@"performanceTestWithResponse"];
[self.someObject doSomethingThatTakesSomeTimesWithCompletionBlock:^(NSString *result) {
[expectation fulfill];
}];
[self waitForExpectationsWithTimeout:5.0 handler:^(NSError *error) {
}];
}];
}
- 이러한 성능 측정 블록은 연속적으로 10 번 실행되고 평균값이 계산됩니다.이 평균 성능 결과를 기반으로 결과가 생성되고 추가 평가를 위해 기준선이 허용됩니다.
- 성능 결과는 사용자 정의 가능한 최대 표준 편차와 함께 이전 테스트 결과 및 기준과 비교됩니다.
러닝 테스트 정장 :
제품> 테스트를 선택하여 모든 테스트를 실행하십시오. Test Navigator 아이콘을 클릭하여 테스트의 상태와 결과를 봅니다. 테스트 탐색기의 왼쪽 하단 모서리에있는 추가 (더하기) 버튼을 클릭하여 프로젝트에 테스트 타겟을 추가하거나 클래스를 테스트에 추가 할 수 있습니다. 특정 테스트의 소스 코드를 보려면 테스트 목록에서 선택하십시오. 파일이 소스 코드 편집기에서 열립니다.
노트 :
아래 그림과 같이 새 프로젝트를 만들 때 단위 테스트 케이스 포함 상자가 선택되어 있는지 확인하십시오.
Modified text is an extract of the original Stack Overflow Documentation
아래 라이선스 CC BY-SA 3.0
와 제휴하지 않음 Stack Overflow