为什么 dotnet 测试工具没有创建代码覆盖率报告?

ajr*_*ajr 3 powershell dotnet-test coverlet

我的项目结构如下:

.
??? Application
??? Application.Core
??? Application.Domain
??? Application.Tests
??? Application.IntegrationTests
??? README.md
Run Code Online (Sandbox Code Playgroud)

运行我的测试的命令我使用以下输入:

dotnet test $folder.FullName -c Release --no-build /p:CoverletOutput='$root\coverage' /p:MergeWith='$root\coverage.json' /p:CoverletOutputFormat=opencover 
Run Code Online (Sandbox Code Playgroud)

这里$folder是指向我Application.Tests路径:C:\projects\coredemoapp\CoreDemoApp.Tests$rootC:\projects\coredemoapp\

所有测试都成功运行。然而,问题是,coverage.json也不是coverage.opencover.xml没有创建的文件。

我也尝试coverlet直接使用以下命令:

coverlet <path to test.dll> -
-target "dotnet" --targetargs "test --no-build" --merge-with $root\coverage.json --format opencover
Run Code Online (Sandbox Code Playgroud)

,一切都在我的本地机器上运行,并具有指向 dll 的显式路径。但是,在使用前一个$folder.FullName作为运行命令的情况下<path to assembly>,coverlet 假定调试dll的路径,而不是它应该的发布版本并且失败。

链接到完整的构建脚本

ajr*_*ajr 11

基本上我忘了将coverlet msbuild NuGet 包添加到我的测试项目中。之后,使用以下命令一切正常:

dotnet test $folder.FullName -c Release --no-build /p:CollectCoverage=true /p:CoverletOutput=$root\coverage /p:CoverletOutputFormat=opencover
Run Code Online (Sandbox Code Playgroud)