XCTestCase的常用断言

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);

        }

    }];

}

你可能感兴趣的:(XCTestCase的常用断言)