如果测试方法比较多的时候也可以直接点击方法后运行的图标单独测试某个方法,Command + U是全部测试:
2、 性能测试
刚开始的时候系统为我们创建的一个测试用例方法里有这么个方法:
- (void)testPerformanceExample {
// This is an example of a performance test case.
[self measureBlock:^{
// Put the code you want to measure the time of here.
}];
}
根据注释可以看到我们可以将需要测试执行时间的代码放在该方法的Block中,测试时Block中的代码会运行10次并打印出每次运行的时间。例如,我们将getNum的代码改成如下代码:
-(NSInteger)getNum{
int time = arc4random_uniform(3);
sleep(time);
return 5;
}
测试代码:
- (void)testPerformanceExample {
NSLog(@"testPerformanceExample-----------------");
[self measureBlock:^{
MyClass *myClass = [[MyClassalloc]init];
[myClassgetNum];
}];
}
按快捷键Command + U进行单元测试,结果如下:
2017-03-06 16:42:01.403 MyDemo[51107:5178923] setUp-----------------
2017-03-06 16:42:01.404 MyDemo[51107:5178923] testPerformanceExample-----------------
/Users/lifengfeng/Desktop/Project/iOSProject/MyDemo/MyDemoTests/MyDemoTests.m:31: TestCase '-[MyDemoTests testPerformanceExample]' measured [Time, seconds] average: 0.422, relativestandarddeviation: 164.533%, values: [0.000053, 2.073384, 0.000010, 1.073334, 0.000013, 1.074108, 0.000016, 0.000005, 0.000004, 0.000003], performanceMetricID:com.apple.XCTPerformanceMetric_WallClockTime, baselineName: "", baselineAverage: , maxPercentRegression: 10.000%, maxPercentRelativeStandardDeviation: 10.000%, maxRegression: 0.100, maxStandardDeviation: 0.100
2017-03-06 16:42:06.080 MyDemo[51107:5178923] tearDown-----------------
从上面可以看到10次中每次执行所花费的时间,从上面我们可以了解到我们代码的性能。
三、常用的测试断言
· XCTFail(format…) 生成一个失败的测试;
· XCTFail(@”Fail”);
· XCTAssertNil(a1, format…) 为空判断, a1 为空时通过,反之不通过;
· XCTAssertNil(@”not nil string”, @”string must be nil”);
· XCTAssertNotNil(a1, format…) 不为空判断,a1不为空时通过,反之不通过;
· XCTAssertNotNil(@”not nil string”, @”string can not be nil”);
· XCTAssert(expression, format…) 当expression求值为TRUE时通过;
· XCTAssert((2 > 2), @”expression must be true”);
· XCTAssertTrue(expression, format…) 当expression求值为TRUE时通过;
· XCTAssertTrue(1, @”Can not be zero”);
· XCTAssertFalse(expression, format…) 当expression求值为False时通过;
· XCTAssertFalse((2 < 2), @”expression must be false”);
· XCTAssertEqualObjects(a1, a2, format…) 判断相等, [a1 isEqual:a2] 值为TRUE时通过,其中一个不为空时,不通过;
· XCTAssertEqualObjects(@”1″, @”1″, @”[a1 isEqual:a2] should return YES”);
· XCTAssertEqualObjects(@”1″, @”2″, @”[a1 isEqual:a2] should return YES”);
· XCTAssertNotEqualObjects(a1, a2, format…) 判断不等, [a1 isEqual:a2] 值为False时通过,
· XCTAssertNotEqualObjects(@”1″, @”1″, @”[a1 isEqual:a2] should return NO”);
· XCTAssertNotEqualObjects(@”1″, @”2″, @”[a1 isEqual:a2] should return NO”);
· XCTAssertEqual(a1, a2, format…) 判断相等(当a1和a2是 C语言标量、结构体或联合体时使用,实际测试发现NSString也可以);
· XCTAssertNotEqual(a1, a2, format…) 判断不等(当a1和a2是 C语言标量、结构体或联合体时使用);
· XCTAssertEqualWithAccuracy(a1, a2, accuracy, format…) 判断相等,(double或float类型)提供一个误差范围,当在误差范围(+/- accuracy )以内相等时通过测试;
· XCTAssertEqualWithAccuracy(1.0f, 1.5f, 0.25f, @”a1 = a2 in accuracy should return YES”);
· XCTAssertNotEqualWithAccuracy(a1, a2, accuracy, format…) 判断不等,(double或float类型)提供一个误差范围,当在误差范围以内不等时通过测试;
· XCTAssertNotEqualWithAccuracy(1.0f, 1.5f, 0.25f, @”a1 = a2 in accuracy should return NO”);
· XCTAssertThrows(expression, format…) 异常测试,当expression发生异常时通过;反之不通过;
· XCTAssertThrowsSpecific(expression, specificException, format…) 异常测试,当expression发生 specificException 异常时通过;反之发生其他异常或不发生异常均不通过;
· XCTAssertThrowsSpecificNamed(expression, specificException, exception_name, format…) 异常测试,当expression发生具体异常、具体异常名称的异常时通过测试,反之不通过;
· XCTAssertNoThrow(expression, format…) 异常测试,当expression没有发生异常时通过测试;
· XCTAssertNoThrowSpecific(expression, specificException, format…) 异常测试,当expression没有发生具体异常、具体异常名称的异常时通过测试,反之不通过;
· XCTAssertNoThrowSpecificNamed(expression, specificException, exception_name, format…) 异常测试,当expression没有发生具体异常、具体异常名称的异常时通过测试,反之不通过;