XCTestCase的常用断言一览
@property(nonatomic,assign)int condition1;
@property(nonatomic,assign)int condition2;
@property(nonatomic,assign)int condition3;
@property(nonatomic,strong)NSString *condition4;
//这里的断言基本都以XCT开头,末参数一定为报错时展示的文字信息
//断言,最基本的测试,第一个参数为真,则通过
XCTAssert(_condition1 == _condition2,@"测试过程中出现错误");
//bool测试中的true测试,首参数为真通过
XCTAssertTrue(_condition1 == _condition2,@"BOOL测试中的true测试出错");
//bool测试中的false测试,首参数为假通过
XCTAssertFalse(_condition1 == _condition3,@"BOOL测试中的false测试出错");
//相等测试,首参数与次参数相等通过
XCTAssertEqual(_condition1,_condition2,@"相等测试出错");
//不相等测试,首参数与次参数不相等通过
XCTAssertNotEqual(_condition1,_condition3,@"不等测试出错");
//针对loat或double比较,首参数与次参数的差,比第三参数的值小,通过
//大于测试
XCTAssertGreaterThan(_condition1,_condition3,@"大于测试出错");
//大于等于测试
XCTAssertGreaterThanOrEqual(_condition1,_condition2,@"大于或等于测试出错");
//相差测试,首参数与次参数的差,比第三参数的值小,通过
XCTAssertEqualWithAccuracy(0.6,0.5,0.11,@"相差测试结果比第三参数大");
//针对loat或double比较,首参数与次参数的差,比第三参数的值大,通过
XCTAssertNotEqualWithAccuracy(0.6,0.5,0.01,@"相差测试结果比第三参数小");
//首参数为nil,通过
XCTAssertNil(nil,@"nil测试");
//首参数不为nil,通过
XCTAssertNotNil(_condition4,@"非nil测试");
//无条件报错
XCTFail(@"强制失败");
异步测试
Unit Testing除了进行一般测试外还可以进行异步测试。逻辑是设置一个【期望】,然后在异步方法中执行【期望满足】。外部则设定一个时间限制来捕获该【期望】。
//异步测试(期望测试)
-(void)testExpectation {
//声明一个期望
XCTestExpectation *exp =[self expectationWithDescription:@"这里写入操作出错的原因描述。。。"];
//添加一个新线程
NSOperationQueue *queue =[[NSOperationQueue alloc]init];
[queue addOperationWithBlock:^{
//模拟这个异步操作需要2秒后才能获取结果,比如一个异步网络请求
sleep(2);
//模拟获取的异步操作后,获取结果,判断异步方法的结果是否正确
XCTAssertEqual(_condition1,_condition2,@"返回结果又问题");
//如果断言没问题,就调用fulfill宣布测试满足期望
//注:如果你申明了多个期望,每个都需要fulfill
[exp fulfill];
}];
//延迟捕获,3秒后未获得满足的期望,会报错。这里修改为"1"就会报错
[self waitForExpectationsWithTimeout:3 handler:^(NSError * _Nullable error){
if(error){
NSLog(@"Timeout Error: %@",error);
}
}];
}