我正在尝试为iOS项目配置代码覆盖率。我为我的应用程序的目标和测试目标设置了两个项目设置,“生成测试覆盖率文件”以及“仪器程序流程”。我还使用了Coverstory的gcovr flush hack在iOS7中生成gcda文件。
我的问题是,当我在清理的构建上运行测试时,我在两个目录中看到gcda和gcno文件(对于我的项目的每个源文件,例如AppDelegate.gcda在两个目录中):
〜/库/开发商/ Xcode中/ DerivedData / MyApp- /生成/中间体/ MyApp.build /调试-iphonesimulator /的 MyApp.build /对象 - 正常/ I386 /
和
〜/库/开发商/ Xcode中/ DerivedData / MyApp- /生成/中间体/ MyApp.build /调试-iphonesimulator /的 MyAppTests.build /对象 - 正常/ I386 /
在每个目录中如何生成gcno和gcda文件之间的区别是什么? (有一些区别,因为如果我在Coverstory中查看文件,某些文件的覆盖范围会有所不同。)
答案 0 :(得分:0)
您有两个不同的目标,并且已为两个测试目标“仪器程序流程”启用了标记“生成测试覆盖率文件”。
MyApp.build包含代码覆盖,而构建在模拟器上运行,MyAppTests显示您的实际测试代码覆盖率。
前一个在某些情况下很有用,例如,您要确定未使用代码的哪个部分。
为避免混淆,您应始终在主目标中启用标记。当您运行单元测试用例时,它将覆盖同一文件夹中的gcda文件,始终为您提供这两种配置的最新信息。