【发布时间】:2023-03-08 13:17:01
【问题描述】:
我正在尝试在我们的 ASP.NET Core 2.0 Web 应用程序上设置代码覆盖率。我使用 dotcover(来自 JetBrains)为我的所有其他构建提供代码覆盖(通过在构建过程中从命令行运行 dotcover)。
当我从构建服务器为 .NET Core 2.0 Web 应用程序运行 dotcover 时,我看到了这一点。
它表示它已经成功运行,但只是挂在那里,没有创建代码覆盖文件。
dotcover analyse /TargetExecutable:"C:\Program Files\dotnet\dotnet.exe" /TargetArguments:"test MyUnitTests.csproj" /Output:report.html /ReportType:HTML /LogFile=dotcover.log
如果我尝试添加代码覆盖率集合,我会看到。
dotcover analyse /TargetExecutable:"C:\Program Files\dotnet\dotnet.exe" /TargetArguments:"test MyUnitTests.csproj --collect:coverage" /Output:report.html /ReportType:HTML /LogFile=dotcover.log
最后,如果我自己运行 dotnet test(不使用 dotcover),它似乎可以正常工作,但再次没有创建覆盖输出。
dotnet test "MyUnitTests.csproj" -- collect:coverage
我不确定如何为 .NET Core 2.0 应用程序生成代码覆盖率,也不确定数据收集器是如何/什么以及应该如何使用它们。 dotcover 在这个例子中是数据收集器吗?
基本上,我只想为 .NET Core 2.0 应用程序生成代码覆盖率。
更新:
根据建议,我安装了 coverlet 作为 dotcover 的替代品。我已经让它工作了,但行为不一致。当我从服务器运行我的批处理文件时,一切都很好。
但是从 TFS 运行时出现错误。
System.IO.FileNotFoundException: 没有可用的测试。确保测试项目具有包“Microsoft.NET.Test.Sdk”的 nuget 引用,并且框架版本设置正确,然后重试。
我的项目确实引用了该程序集(默认情况下,它在您创建单元测试项目时由 VS 自身安装)。
为什么 TFS 抱怨该程序集确实存在并且可以从命令行手动运行而不会出现错误?
【问题讨论】:
-
我想知道它是付费产品,为什么不直接联系他们……他们过去真的很有帮助。如果你得到答案,那么你可以在这里添加它,所以我们都知道是否遇到同样的问题。
-
@balexandre - 同样,我发现他们的支持很好,但他们的命令行工具是免费的,所以那里可能没有足够的动力。
标签: asp.net-core .net-core code-coverage dotcover