美文网首页
【SDK】单元测试,XCTestCase,查看覆盖率

【SDK】单元测试,XCTestCase,查看覆盖率

作者: Draven_Lu | 来源:发表于2019-12-19 20:33 被阅读0次

写在前面

上一篇,这次主要是编写循序递进的用例和查看覆盖率
其实说白了,还是要严格按照测试驱动开发的原则来。当然了,如果只是了解下XCTestCase,看上一篇就够了

操作步骤

一、testCase与类之间的关系

如果你是先写的类,即使没有写任何代码。那么这一步也是有问题的。切记先写测试的case代码,在去写功能代码。因为这个顺序会左右你函数设计的思路。不信试一下就知道了,我也是踩了坑才知道这一点很关键。
一般来说,你设计好你的功能结构后,就开始编码。这时候,我们用编写测试用例来代替编码,先写case,然后写真正的代码;然后运行,确保你的测试代码真的调用被测试方法后,再到函数里面逐步完善功能。如此循环往复。这一段,《重构》一书中就说的比较明白。好处就是!!!!自己体会。
一般来说(AGAIN),一个测试类对应一个功能性质的类。比如我demo中SayWordsYouWantTest类对应SayWordsYouWant类,如下图
这样其实比较好管理testCase 里面的变量,作用域以及case失败时的抛异常。

截屏2019-12-11下午4.50.33.png
二、覆盖率

具体设置case的变量,异常语句,帖子还是蛮多的。这个我参考,感谢分享。

截屏2019-12-11下午5.30.59.png

这里有些不一样的,XCode 11 要看具体哪一行是否被执行,设置的是下图中的右上角的第一个按钮,然后选择Code Coverage ,再然后鼠标移到右边栏的数字上,绿色代表执行,数字代表一共被执行了几次。


截屏2019-12-11下午5.50.30.png

我当时在看这个每一行是否被执行到的时候,脑袋一晕的疑问:为什么要看每一行是否被执行。因为:执行的多了,是不是你的代码不够的封装或者解耦有问题?

查看结果文件(以后CI里用得到)

每次test完成后都会有一个.xcresult文件,这个文件在项目里的Logs->Test里面。xcode打开就看到本文中的第二张图。所有的build、coverage和log都能看到。
如下图

WechatIMG3010.jpeg
也可以直接command+9,或者鼠标选到下图中的1
WechatIMG3009.jpeg
越到后面会越发的发现,OMG,XCTest也太好用了吧~

如果看不到coverage,点击edit scheme,看对应的tagart-->test-->code Coverage 那个对勾都勾上了没有

查看性能测试的相关指标:

执行完了之后控制台会有下面的打印,说的很清楚了

Test Case '-[QueueTests testPerformanceHaha]' measured [Time, seconds] average: 0.000, 
relative standard deviation: 30.471%, 
values: [0.000403, 0.000236, 0.000169, 0.000199, 0.000211, 0.000177, 0.000201, 0.000206, 0.000190, 0.000164], 
performanceMetricID:com.apple.XCTPerformanceMetric_WallClockTime,//度量尺度是WallClockTime
baselineName: "", 
baselineAverage: , maxPercentRegression: 10.000%, 
maxPercentRelativeStandardDeviation: 10.000%, 
maxRegression: 0.100, maxStandardDeviation: 0.100
Screen Shot 2020-01-15 at 11.28.37 AM.png

总结

到这里大部分是简单的测试代码,以及怎么看。后面会开始尝试编写像故事一样的test case


更新

目前项目的覆盖率已经2.5%了,滴水石穿加油
刚才看覆盖率的时候发现一个没见过标识,如果有谁知道表示啥,请指教,谢谢


image.png

绿色是跑过的,红色是没有的,带白色斜杠的是啥意思?

更新

绿色是跑过的,红色是没有的,带白色斜杠的是啥意思?
带白色斜杠表示条件判断,因为只要是判断的那一行就是这样的。从图形上,表示执行了,但是断开了,有种分界线的意思。暂且就这么理解吧。

demo
对应这次提交:9a30d923dd4e6800a48a7916eacba5e19d48b9de

相关文章

网友评论

      本文标题:【SDK】单元测试,XCTestCase,查看覆盖率

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