我有一些UIView类,尽管该类仍在讨论之列。我还没有在单元测试目标下添加它们。既不是单元测试也不是UI单元测试。但那些文件仍在显示。
我不知道它们是否包含在测试范围内。
问:我们如何将它们从单元测试范围中删除? 问:他们是否参与单元测试覆盖率得分?单元测试涵盖的类别:
未在测试目标中添加的类:
答案 0 :(得分:1)
我认为您的问题与所有目标的收集代码覆盖率有关。
@testable import UnitTestExampleCodeCoverage
添加到所需的新目标文件。
在我的示例项目中,我有:AppDelegate
,ViewController
,ViewController2
,ViewController3
,ViewController4
,View
,View2
,{ {1}},View3
。我添加了新的目标:View4
,AppDelegate
,ViewController3
,ViewController4
,View3
,因此只有这五个类可以作为计算代码覆盖率的基础。
将测试添加到您的班级。
代码覆盖率报告仅包含添加到新目标的类。请记住,旧目标可以是您的主要目标-新目标只是实现您目标的一种抽象层:“从代码覆盖率报告中删除一些类”。
这是整个项目:https://github.com/mStaruchowicz/SO55723759
测试愉快;)
答案 1 :(得分:1)
在项目中激活覆盖率时,目标中的所有文件都会计算覆盖率。
我建议您使用XCOV: https://github.com/nakiostudio/xcov
您可以运行coverage并放置忽略的文件以改善正确的coverage。
答案 2 :(得分:1)
您好@Sandy,回答您的问题:
我们如何将其从单元测试范围中删除?
从Xcode 10.2开始,无法从测试覆盖率报告中排除文件。
他们是否参与单元测试覆盖率得分?
是的。所有文件占总覆盖率的百分比。
如果您要计算不考虑某些文件的测试覆盖率得分,则最好的机会是编写一个脚本来解析xccov
输出。
我找不到有关如何与之交互的任何正式文档,但是this post是一个很好的起点。
答案 3 :(得分:0)
如果您想获得可自定义的UT覆盖率报告,而可以忽略所需的文件,Slather可能是最好的工具。
您可以通过在.slather.yml
选项下配置ignore
文件中的文件来忽略覆盖范围计算中的文件。
请查看here详细信息,如何忽略。
答案 4 :(得分:0)
运行单元测试时,
问题在于应用启动会激发您的正常顺序,创建视图并可能启动一些网络调用。这不仅会干扰代码覆盖率报告,还可能会毒害您的单元测试。例如,如果通过让单元测试触发通知来测试通知,则需要知道监听该通知的唯一对象是由测试创建的,而不是在应用程序启动时出现的。
忽略某些文件的覆盖范围的另一个问题是:如何查看这些文件的单元测试覆盖范围?
解决方案是使用其他应用程序委托进行几乎不执行任何操作的测试。有关详细信息,请参见How to Switch Your iOS App Delegate for Improved Testing