iOS - 单元化测试学习记录
将项目划成小的单元,进行测试,规范架构和编码,回归测试(测试之前的版本,为了防止耦合性的功能出现问题)codecoverage代码覆盖率 越高越好
单元测试可降低耦合性
何为单元:单一界面,单一功能等都称作一个小单元
单元测试和我们有什么关系?或者说对我们工作有什么关系?
增加测试能力
做单元测试的成本和收获是什么:
成本:自然要花很多时间去做测试架构的搭建,增加项目进度
收获:提升代码质量、提升团队协作效率、提升代码的健壮性、提高项目自动化测试占比
单元测试两大原则:互不干扰、单一变量原则
1、逻辑测试
什么是逻辑测试?
逻辑测试是指对项目工程中的逻辑方法,工具等进行的Test测试。然后启动test进行方法检验,常见的方法为
-(void)testLogic{
//1、建立正确的调用逻辑
int num1 = 10;
int num2 = 20;
//2、使用
int num3 = [self.vc logic:num1 num2:num2];
//3、判断是否正确,做出异常log
//XCTAssertEqual(<#expression1#>, <#expression2, ...#>)代表逻辑结果的判断,可验证是否符合预期需求结果,“...”代表可以多参数,num3为逻辑方法的返回值,30位期盼值,后面可写异常情况抛出的log信息
XCTAssertEqual(num3, 30,@"逻辑出错,异常: ========");
}
如果逻辑代码出错,代表你的code是有问题的。需要细心检查,解决问题。
2、性能测试
性能测试:顾名思义就是对项目中需要进行耗时,占内存等的情况进行性能测试,已控制代码性能在我们需求范围之内,不要过度的影响用户体验,但目前苹果只开放了一个,就是XCTPerformanceMetric_WallClockTime
- (void)testPerfomanceExampleVC{
[self measureBlock:^{
//performance为要测试性能的方法
[self.vc performance];
}];
}
- (void)testPerfomanceExample{
[self measureMetrics:@[XCTPerformanceMetric_WallClockTime] automaticallyStartMeasuring:NO forBlock:^{
[self.vc performance];
//更精确的计算
[self startMeasuring];
//要测试性能的方法
[self.vc performance];
[self stopMeasuring];
}];
}
具体代码和测试架构搭建,可参考AFNetworking框架的自动化测试类,后续会持续更新...
网友评论