Xcode和代码覆盖率

7

我的应用程序最初不是为Mac平台编写的,因此它有自己的单元测试系统,可以通过命令行触发。是否可以通过执行代码来利用Xcode中的代码覆盖率支持?

我尝试将其运行为一个UnitTest,手动触发我的应用程序的'main(...)'函数(参见代码块),但由于此过程是由应用程序“xctest”启动的,因此缺少许多东西,例如来自我的应用程序包的资源等(不正确或错误的路径,...)。

- (void)testExample {
  int main(int argc, char* argv[]);
  main(...);
}

有没有一种方法只需告诉 Xcode 启动我的应用程序,就可以输出代码覆盖率,以便在 Xcode 内进行审查?

我在这里发布了一个类似问题的解决方案: https://dev59.com/NVwY5IYBdhLWcg3wLFSw#63786744 - Raunak
1个回答

2
我之前没有使用过XCode的覆盖率工具,但我之前用过gcov。无论如何,在这篇文章中有关于如何创建llvm覆盖率报告的信息。因此,您可以使用带有llvm覆盖标志的单元测试系统,然后使用llvm-profdata工具创建.profdata报告。
据我了解,Xcode的代码覆盖工具也会创建.profdata报告并使用它。我没有直接的解决方案,但您可能会在这些信息中找到一些有用的东西。如果您找到了一种让Xcode使用您的.profdata的方法,那就完成了 :)

这适用于 C++ 吗?文章似乎是针对 ObjC 和 Swift 的。 - CoffeeTableEspresso
@CoffeeTableEspresso 这个建议在 C++ 中尚未被证明有效:/ 如果您想查看 C++ 代码的覆盖率,可以使用 gcov。不过我不确定您如何在 Xcode 工具中实现这一点。 - halit
我一直在努力让我的C++项目正常工作。尝试使用gcov,但是让它与Xcode配合工作非常麻烦。 - CoffeeTableEspresso

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接