C# 在没有代码覆盖率工具作为入口点的情况下,是否可以收集代码覆盖率数据?

C# 在没有代码覆盖率工具作为入口点的情况下,是否可以收集代码覆盖率数据?,c#,.net,automated-tests,code-coverage,C#,.net,Automated Tests,Code Coverage,我试图从我的测试床上收集代码覆盖率信息 到目前为止,我考虑使用的大多数代码覆盖工具都是作为软件的入口点来运行的;通常,您将命令行参数或可执行路径传递给代码覆盖率工具,该工具将运行您的程序,并在程序运行时收集代码覆盖率数据 不幸的是,我的测试解决方案在每次测试中都会启动和停止我的程序。这意味着传统的代码覆盖率将不起作用 在其他进程运行可执行文件和相关DLL时,是否有一种被动监视其代码覆盖率的方法 请注意,我不是在要求具体的软件建议。我只想知道我需要的代码覆盖率收集类型是否可行,如果可以,它的名称是

我试图从我的测试床上收集代码覆盖率信息

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

不幸的是,我的测试解决方案在每次测试中都会启动和停止我的程序。这意味着传统的代码覆盖率将不起作用

在其他进程运行可执行文件和相关DLL时,是否有一种被动监视其代码覆盖率的方法

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

您可以使用和

使用
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

我以前看过这些文件。我不太确定他们是否按照我认为的方式工作。我会用这些做一些测试。事实上,这看起来不起作用。在程序上使用vsinstr会阻止程序运行。我想这是一个签名问题。如果要对程序集进行签名,请尝试以下操作: