美文网首页
XCTestCase的常用断言

XCTestCase的常用断言

作者: 不慌不忙 | 来源:发表于2018-03-20 11:59 被阅读68次

    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的常用断言

          本文链接:https://www.haomeiwen.com/subject/fbfpqftx.html