수색…


비고

종속성 :

  • 응용 프로그램에서 타사 라이브러리 또는 코코아 포드를 사용하는 경우 해당 라이브러리 또는 포드도 테스트 용으로 설치해야합니다.
  • 테스트 클래스 (테스트 슈트)는 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