当我运行覆盖测试时,我得到了测试方法代码的覆盖范围,没有我要测试的方法的覆盖范围

时间:2017-05-28 08:10:00

标签: c# code-coverage mstest opencover

我有一个项目,包含我想要测试的类和方法。我有另一个项目,测试方法将测试我的主项目的方法。

我使用opencover运行测试,并使用reportgenerator生成报告,并在.bet文件中使用此命令:

..\tools\OpenCover.Console.exe -register:user -target:"C:\myDllWithTests.dll" -output:"c:\coverage\opencovertests.xml"

.\ReportGenerator.exe "-reports:c:\coverage\opencovertests.xml" "-targetdir:c:\coverage\opencovertests.xml\reports"

我正在使用MSTest进行测试。

问题是在html报告中,我看到所涵盖的代码是测试方法,而不是我测试主项目中的方法。

如何在结果中添加主要方法?

感谢。

2 个答案:

答案 0 :(得分:1)

在OpenCover的target参数中传递MSTest的路径(例如“C:\ Program Files(x86)\ Microsoft Visual Studio 10.0 \ Common7 \ IDE \ mstest.exe”)并指定您的测试程序集(例如targetargs参数中的“C:\ myDllWithTests.dll”)。

要从代码覆盖率统计信息中删除测试程序集,请在filter argument

中指定它们

以下是适用于我的OpenCover命令。这里的测试代码放在SampleApp.dll中,测试代码放在SampleApp.Tests.dll中。

.\OpenCover.Console.exe -register:user -mergebyhash -target:"c:\Program Files (x86)\Microsoft Visual Studio 14.0\Common7\IDE\MSTest.exe" -targetargs:"/testcontainer:\"d:\test\SampleApp\SampleApp.Tests\bin\Debug\SampleApp.Tests.dll\"" -output:UTResults.xml -filter:"+[SampleApp*]* -[SampleApp.Tests]*"

结果报告仅包含SampleApp.dll程序集的统计信息,不包括SampleApp.Tests.dll:

enter image description here

查看此answer以获取更多详细信息。 Allen Conway还有一个great article使用OpenCover& amp; ReportNetnerator for .Net projects。

答案 1 :(得分:0)

这可能是一个很晚的答案,但是我花了一个或两个小时来解决这个问题,发现以下内容可以解决此问题。值得注意的是,我从另一个我知道可以正常工作的项目中获得了原始bat脚本,并且只是更改了DLL文件名,所以我知道该脚本可以。

要进行的其他检查是:-

  1. 右键单击具有您希望在覆盖率报告中可见的源代码的项目(而不是单元测试项目),然后单击属性
  2. 选择构建> 输出> 高级
  3. 调试信息设置为完整
  4. 重建解决方案并重新运行bat文件。

在Visual Studio 2019中使用.NET Framework 4.7.2项目为我工作。