我有一个项目,包含我想要测试的类和方法。我有另一个项目,测试方法将测试我的主项目的方法。
我使用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报告中,我看到所涵盖的代码是测试方法,而不是我测试主项目中的方法。
如何在结果中添加主要方法?
感谢。
答案 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:
查看此answer以获取更多详细信息。 Allen Conway还有一个great article使用OpenCover& amp; ReportNetnerator for .Net projects。
答案 1 :(得分:0)
这可能是一个很晚的答案,但是我花了一个或两个小时来解决这个问题,发现以下内容可以解决此问题。值得注意的是,我从另一个我知道可以正常工作的项目中获得了原始bat脚本,并且只是更改了DLL文件名,所以我知道该脚本可以。
要进行的其他检查是:-
在Visual Studio 2019中使用.NET Framework 4.7.2项目为我工作。