是否有可能在没有代码覆盖工具作为切入点的情况下收集代码覆盖率数据?

时间:2017-07-17 20:22:52

标签: c# .net automated-tests code-coverage

我正在尝试从我的测试台收集代码覆盖率信息。

到目前为止,我考虑使用的大多数代码覆盖工具都是作为软件的入口点运行的;通常,您将命令行参数或可执行路径传递给代码覆盖率工具,它会运行您的程序,在运行时收集代码覆盖率数据。

不幸的是,我处于测试解决方案启动和停止每个测试程序的情况。这意味着传统的代码覆盖不起作用。

有没有办法在其他进程运行代码覆盖时被动监视可执行文件和相关的DLL?

请注意,我不是要求提供具体的软件建议。我只是想知道我需要的代码覆盖率类型是否可行,如果是这样,它的名称是什么,所以我可以自己做进一步的研究。

1 个答案:

答案 0 :(得分:1)

您可以使用vsperfcmdvsinstr

您使用vsinstr来检测二进制文件,然后启动和停止vsperfcmd以指示您的保险期限的开始和结束。

所以你可以这样做:

vsinstr -coverage $(pathToDLL1)
vsinstr -coverage $(pathToDLL2)
vsinstr -coverage $(pathToDLL3)
vsperfcmd -start:coverage -output:SomePath\ManualCoverage.coverage
// DO YOUR TESTING HERE
vsperfcmd -shutdown

在VS 2015上,您可以查看C:\Program Files (x86)\Microsoft Visual Studio 14.0\Team Tools\Performance Tools\x64这两个二进制文件。