BDB*_*BDB 10 c# mstest code-coverage azure-devops coverlet
我轻松配置为获取 Azure DevOps 中项目的覆盖率结果.NET Core,但项目的运气不佳.NET Framework。
因此,我将非常感激获得有关此问题的建议,因为封面文档明确表示我们也可以将其用于.NET Framework项目。这个问题与我的有点相似,但我在那里没有看到任何答案,
你可以使用 Coverlet 获取 .NET Framework 项目中的代码覆盖率数据吗?
最后,我找到了一个更简单的解决方案。这里是,
<IsTestProject>true</IsTestProject在测试项目文件中添加>。
dotnet test/dotnet test /p:CollectCoverage=true在测试项目位置(存在 TestProject.csproj 的位置)运行命令
运行命令后您可能会收到以下错误,
找不到导入的项目“C:\Program Files\dotnet\sdk\3.1.100\Microsoft\VisualStudio\v16.0\WebApplications\Microsoft.WebApplication.targets”。
在项目文件(您想要对其进行单元测试并获取代码覆盖率)中,更改以下导入语句
这,<Import Project="$(VSToolsPath)\WebApplications\Microsoft.WebApplication.targets" Condition="'$(VSToolsPath)' != ''" />
到,<Import Project="$(VSToolsPath)\TeamTest\Microsoft.TestTools.targets" Condition="Exists('$(VSToolsPath)\TeamTest\Microsoft.TestTools.targets')" />
这对我在本地和 Azure DevOps 都有效。
注意:不要忘记在测试项目中安装 Coverlet.msbuild。
更新:
仅当您没有收到“.Microsoft.WebApplication.targets was not found”错误时,上述方法才有效。注释建议的导入语句将导致发布最终失败,这是显而易见的。因此,我最终使用了 Coverlet.Console,它运行顺利,没有任何错误。但是,要使用 coverlet.console 我需要TestProject.dll文件而不是项目文件(.csproj);所以我必须为测试项目添加额外的构建任务。这是如何安装和使用 Coverlet.console 的文档
希望这对最终登陆这里的人有所帮助。