通过手动测试实现 dotnet 核心应用程序的代码覆盖率

问题描述 投票:0回答:2

我正在尝试通过手动测试获取 dotnet 核心应用程序的代码覆盖率(我没有任何单元测试项目)

正如这个SO Question中提到的,我正在尝试使用 vsinstr 进行检测和 vsperfmon。

但是当运行以下命令时

vsinstr /coverage C:\Test\netcoreapp2.0\ConsoleAppCodeCoverageTest.dll

我收到以下错误。

Microsoft (R) VSInstr Post-Link Instrumentation 15.0.27128 x86
Copyright (C) Microsoft Corp. All rights reserved.

File to Process:
   C:\Test\netcoreapp2.0\ConsoleAppCodeCoverageTest.dll --> 
C:\Test\netcoreapp2.0\ConsoleAppCodeCoverageTest.dll
Original file backed up to 
C:\Test\netcoreapp2.0\ConsoleAppCodeCoverageTest.dll.orig

Error VSP1019: Internal error.  HRESULT=80004005

但是如果我在 .Net Framework 应用程序 exe 上使用 vsinstr ,它就可以正常工作。

知道如何解决这个问题,或者是否有任何其他方法可以通过手动测试来获取 dotnet 核心应用程序的代码覆盖率。

visual-studio-2017 .net-core code-coverage
2个回答
0
投票

目前您必须运行 Visual Studio Enterprise,它仅适用于 Windows。

相关github issue.

如果这对您来说不是问题,请注意这些说明:

如果您在 VS 中进行针对 .NET Core 的测试,则需要将对 Microsoft.CodeCoverage NuGet 包的引用添加到您的测试项目中,并更新测试项目和待测试应用程序项目以生成 '完整的调试信息。

更多详情这里


0
投票

Visual Studio 有一个控制台应用程序,可用于手动代码覆盖,请参阅 https://learn.microsoft.com/en-us/visualstudio/test/microsoft-code-coverage-console-tool?view=vs-2022

总而言之,您可以通过四个步骤获得手动覆盖:

  1. 检测你的二进制文件:
    Microsoft.CodeCoverage.Console instrument --session-id 73c34ce5-501c-4369-a4cb-04d31427d1a4 MyApplication.exe
  2. 以服务器模式启动覆盖工具,使用任意会话ID:
    Microsoft.CodeCoverage.Console collect --session-id 73c34ce5-501c-4369-a4cb-04d31427d1a4 --server-mode
  3. 运行您的应用程序并练习您想要的任何场景
  4. 关闭代码覆盖率服务器
    Microsoft.CodeCoverage.Console shutdown 73c34ce5-501c-4369-a4cb-04d31427d1a4

这将输出一个文件,默认名为

output.coverage
,您可以在 VS 中打开该文件来查看您的覆盖范围!

© www.soinside.com 2019 - 2024. All rights reserved.