我想在ASP.NET Core应用程序中测量我的XUnit-Tests的代码覆盖率 . Visual Studio 2015中的.NET Core工具是预览2,目前代码覆盖率不起作用 .
2月份的博客文章http://dotnetthoughts.net/measuring-code-coverage-of-aspnet-core-applications-using-opencover/通过使用打开封面的命令行显示了一种解决方法 . 我正在寻找Visual Studio内部更加集成的方式 .
有没有人听说过与XUnit结合使用的更好/更集成的代码覆盖率测量方法?
7 回答
将NuGet package Microsoft.CodeCoverage 1.0.1添加到
project.json
.我正在为
Asp.NET
模板工作,现在我正在进行单元测试,所以我看到了你的帖子 . 你可以看到项目/配置here .Disclaimer :这些步骤来自Measuring ASP.NET Core Coverage with OpenCover - DotNetThoughts .
虽然海报上有关于这个网站的说法,但我认为在这里继续繁荣这些步骤仍然是最好的 .
注意:这些说明虽然适用于Windows操作系统,但应该可以轻松地用于OpenCover和ReportGenerator支持的任何操作系统 .
创建ASP.NET核心MVC网站
确保global.json在项目中具有"test"
右键单击解决方案中的测试文件夹并添加新项目
确保项目类型是.NET Core类库
将以下内容添加到project.json依赖项节点:
"dotnet-test-xunit":"2.2.0-preview2-build1029",
"xunit":"2.2.0-beta3-build3402"
"Microsoft.CodeCoverage":"1.0.2"
在版本下将以下内容添加到project.json中
"testRunner":"xunit",
编写单元测试
下载OpenCover和Report Generator
安装OpenCover
将Report Generator提取到名为Report Generator的文件夹中的OpenCover install dir中
在项目中创建一个BAT文件并将其命名为cover.bat
添加以下内容:
用项目命名空间替换NAMESPACE .
如果有多个项目,请根据需要为每个名称空间复制正则表达式
+[*]NAMESPACE.*
保存文件
打开命令提示符并确保在测试项目中
键入封面以使您的单元测试运行,并且您的覆盖率结果为HTML格式,或者您在步骤11中命名为bat文件的任何内容 .
代码覆盖对我有用,对于.Net Core使用
Microsoft.CodeCoverage
如上所述 .检查是否已将
Microsoft.CodeCoverage
nuget添加到测试项目中还要检查主项目上的project.json文件,debugType属性应该是“full”而不是“portable”
这对我来说很有用
Coverlet(https://github.com/tonerdo/coverlet)是最近出现的一个新项目 . 它与msbuild一起工作,为覆盖提供了直接的解决方案
我得到了一些URL提示 . (底部的网址)
这是“穷人”,但它会在你的默认浏览器中发出一个htm文件,其中有一些很好的覆盖htm报告 . 比VS 2017 ENTERPRISE版便宜得多!
显然,您必须将__unitTestProject设置为正确的值 .
我的UnitTests.csproj中有这个:
值得注意的是,“coverlet.msbuild”和“dotnet-reportgenerator-cli” . 我知道你需要“coverlet.msbuild”,另一个可能只是你可能或不需要的实验 .
我正在使用很多bat变量来驱动东西,并输出到%TMP%文件夹以避免VS / git想要检查文件 .
提示来自:
https://holsson.wordpress.com/2018/11/30/test-code-coverage-with-net-core-and-tfs/
https://tattoocoder.com/cross-platform-code-coverage-arrives-for-net-core/
https://medium.com/bluekiri/code-coverage-in-vsts-with-xunit-coverlet-and-reportgenerator-be2a64cd9c2f
我刚刚尝试了ReSharper版本2016.3 EAP 4(早期访问预览) . 除了单元测试执行现在dotCover还返回我的.net核心测试项目的代码覆盖率信息 .
OpenCover ReportGenerator . 作为NUGET包安装到您的一个测试项目中(一次,因为它们只需要出现在包文件夹中) .
然后你可以将这个powershel https://github.com/rpokrovskij/opencover4vs.ps1放到你的解决方案文件夹中,并使用路径全局设置你的测试项目,例如
然后,您可以将其作为常规Powershel脚本运行 . 结果应显示在\ TestsResults \ report \ index.html的解决方案文件夹中