如何在 Visual Studio 2010 的 C++ googletest 项目中设置代码覆盖率
Posted
技术标签:
【中文标题】如何在 Visual Studio 2010 的 C++ googletest 项目中设置代码覆盖率【英文标题】:How do I set up code coverage in C++ googletest project in Visual Studio 2010 【发布时间】:2013-04-08 14:18:11 【问题描述】:我在 Visual Studio 2010 专业版中构建了一个 C++ googletest 项目。这将构建一个生成 XML 测试结果输出的控制台应用程序。如何设置它以获取代码覆盖率信息?
我已尝试使用指令 here 来检测代码,但查看代码覆盖率结果似乎需要 Visual Studio Ultimate。 Visual Studio 生成的 .coverage 文件是否有任何转换器?
便携式/免费/开源解决方案的奖励积分!
【问题讨论】:
【参考方案1】:您可以尝试 OpenCppCoverage:http://opencppcoverage.codeplex.com。
OpenCppCoverage是Windows下C++的代码覆盖工具。它是开源的,可与 google test / Visual Studio C++ 配合使用。
免责声明:我是此工具的作者。
希望有所帮助。
编辑以遵循brasofilo 建议:
为了更准确地了解您的问题,OpenCppCoverage 应该与 Visual Studio C++ 2010 专业版一起使用。唯一的要求是支持 native Pdb 文件 (http://msdn.microsoft.com/en-us/library/yd4f8bd1%28vs.71%29.aspx)。
它是开源免费的,你可以在这里找到源代码:https://opencppcoverage.codeplex.com/SourceControl/latest。
便携是什么意思?
如果您的意思是“多平台”-> 不,它仅适用于 Windows 如果您的意思是“便携式应用程序”(http://en.wikipedia.org/wiki/Portable_application):OpenCppCoverage 只需要 Redistributable 即可在主机上安装 Visual Studio 2013 (http://www.microsoft.com/en-US/download/details.aspx?id=40784),但它不会写入注册表,您可以将二进制文件移动到您想要的位置(例如 USB 密钥)。希望有所帮助。
【讨论】:
请根据问题调整每个答案,复制粘贴相同的答案不会剪切它,免责声明或不免责声明。 @OpenCppCoverage 很高兴看到您的项目仍然存在 - 最后一次更新是在 4 天前。我注意到您有一个命令行界面 - 不使用 MSVC 并且仍然生成 HML 输出的 Windows 编码人员可以使用该工具吗?是开源软件吗?可以重建它以在 Linux 上使用吗?它是否主要基于gcov
(可能还有lcov
)并且只是重新包装为MSVC 插件?是否有 Linux 版本的计划,或者如果它是 FOSS,则反对分叉?【参考方案2】:
我认为您可以为此目的使用 VSTEST.Consol.exe http://msdn.microsoft.com/en-us/library/vstudio/jj155796.aspx。
根据文档,它将运行针对任何测试框架编写的测试。您可以启用
/Enablecodecoverage
选项,其中Enables data diagnostic adapter CodeCoverage in the test run.
更多信息可以在这里找到:http://blogs.msdn.com/b/bhuvaneshwari/archive/2012/06/16/vstest-console-exe-commandline-test-runner.aspx
还有一个开源代码覆盖工具叫ggcov:http://ggcov.sourceforge.net/index.html
希望这些有所帮助。
【讨论】:
看起来VSTest.Console.exe是Visual Studio 2012自带的;我还在 2010 年。 @PsZk 不,它也带有 VS2010。根据这个链接:social.msdn.microsoft.com/Forums/en-US/vststest/thread/…以上是关于如何在 Visual Studio 2010 的 C++ googletest 项目中设置代码覆盖率的主要内容,如果未能解决你的问题,请参考以下文章
关于在Visual Studio2010中如何卸载Visual Asixist这个插件?为啥将它卸载后Visual Studio启动后仍然有