代码覆盖率结果不准确到Xcode 7中的实际覆盖率

Sud*_*mar 20 xcode code-coverage ios swift xcode7

我在应用程序中运行测试用例,启用了代码覆盖率数据Xcode 7 Beta 2.但是,当我的所有测试用例都成功运行时,我只能获得少量文件覆盖率数据.

有些文件已经通过单元测试用例覆盖了所有代码,但仍显示3%的代码覆盖率.

例如:

在此输入图像描述 这是代码覆盖的结果,正如您可以在右侧看到的那样,有一个信息在测试期间调用这些代码行的次数.在这种情况下 - 0.

但...

在此输入图像描述 这里是测试中的一个地方,我们可以看到这个函数确实被调用了.多少次?哦......至少一次.此号码由右侧的信息提供.

所以上面的代码应该标记为被调用,而不是灰显:-)

有谁能解释一下?为什么会这样?

Bar*_*zyk 28

它的工作原理.

  1. 由于Apple发布了@testable关键字以将项目导入测试目标,因此您不必再将文件添加到两个目标:

在此输入图像描述

  1. 所以只需从测试目标中删除每个文件:

在此输入图像描述

  1. 无论您何时需要从测试目标访问您的文件,只需使用以下命令导入目标: @testable import MyApp

在此输入图像描述

  1. 对项目中的每个文件执行此操作.

然后代码覆盖率将正常工作.

阅读更多Swift 2 + Xcode 7:单元测试访问变得轻松!!!!

如果您需要知道如何使用代码覆盖率阅读如何在Xcode 7中使用代码覆盖率?

正如之前提到的@Gerd Castan所说:"因此,在我看来,当存在至少一个未测试此方法的目标时,测试方法显示覆盖率为0."

解决方案很简单.不要让编译器认为此文件包含在多个目标中,而是使用@testable关键字导入模块.

  • 同意:不要编译到测试目标并测试每个剩余的目标. (4认同)

小智 0

请记住,有多种方法可以通过测试覆盖代码,您可以测试所有函数,也可以覆盖函数中的所有指令,但可能无法覆盖所有可能的执行路径。

或者 Xcode 覆盖率内容可能会被破坏,但如果您不提供有关您希望它检查哪种覆盖率的详细信息,则很难判断。