单元测试的作用: 它可以测试每个可执行的单元,在我们APP中每个可执行的单元都是一个函数,我们可以对函数可以进行测试.
步骤:
1.打开Xcode新建一个单元测试的工程,新建一个Tools的工具类,并写两个方法.
![1672235-140f1113b3352d95.png](https://i-blog.csdnimg.cn/blog_migrate/f49ca9454f4b7f26ce66246125367bb2.png)
1-0.png
2.新建一个Targer,默认生成一个UnitTestDemoTests.m的文件
![1672235-e3860f6ea4333095.png](https://i-blog.csdnimg.cn/blog_migrate/ce7aafb680829fb9607ed98807191db4.png)
1-1.png
各个函数的含义:
///每个测试用例之前都会调用的方法
- (void)setUp {
[super setUp];
}
///每个测试用例结束之后都会调用的方法
- (void)tearDown {
[super tearDown];
}
///测试用例的方法
- (void)testExample {
}
///测试性能的方法
- (void)testPerformanceExample {
[self measureBlock:^{
}];
}
3.我们想要测试Tools里面的代码,我们需要在创建一个测试用例.我们想分方法测试,只需要自己写一个方法即可,但是需要以test开头.
![1672235-b12d5aae896981a6.png](https://i-blog.csdnimg.cn/blog_migrate/1f9373a267cb93e437ecebc357a89e30.png)
1-2.png
这里我们可以写自己的测试方法.
![1672235-6ef8b8f5cba5581a.png](https://i-blog.csdnimg.cn/blog_migrate/faadcbd08990694c4f18765131959d79.png)
1-4.png
点击方法前面的黑色箭头,或者直接按command+u快捷键运行测试用例.可以看到测试通过的提示框.
![1672235-fe45df99746c6937.png](https://i-blog.csdnimg.cn/blog_migrate/d23dc8b03d885f8765472dfdb666038c.png)
1-5.png
![1672235-01bacaa7da162625.png](https://i-blog.csdnimg.cn/blog_migrate/8a56f5e69a760f5aedad21b74a2e92b7.png)
1-6.png
这里可以看到内部函数的耗时都可以到看,这个是测试函数性能的.
![1672235-5f99a73b244997d3.png](https://i-blog.csdnimg.cn/blog_migrate/30dbd12b38a3f7e3965add5a44578c55.png)
1-7.png
单元测试中还有一个代码覆盖率的问题,例如:现在我的Tools里面有两个函数,但是我只测试了add的函数,并没有测试device的函数,所以不能保证这个工具类非常独立,非常完整.我们也可以通过Coverage查看代码覆盖率.
![1672235-cb642134cf1d618a.png](https://i-blog.csdnimg.cn/blog_migrate/1299ac44684ecda31c3188d475110841.png)
1-8.png
但是当前的话没有覆盖数据,这里需要设置下:
![1672235-6978f5ef2a2ed7e5.png](https://i-blog.csdnimg.cn/blog_migrate/a04dfd3b1c461046c1f31cc607138dba.png)
1-9.png
再次command+u运行一下测试用例,再查看就可以带到代码的详细覆盖率了.
![1672235-988371407125eba5.png](https://i-blog.csdnimg.cn/blog_migrate/4480512250d92cfb4c00cb0c2b90cc12.png)
1-10.png
![1672235-339c4914c9ca6317.png](https://i-blog.csdnimg.cn/blog_migrate/c20218bb979f5153a87303131710fa7d.png)
1-11.png