问题标签 [coverlet]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
2 回答
161 浏览

visual-studio - 最新/上一个版本返回错误“无法评估表达式“[System.Version]::Parse('')”。版本字符串部分太短或太长。”

尝试使用 nuget 包管理器为 VS 2019 社区上的 C# 单元测试项目安装最新版本(3.1.0)的coverlet.msuild。我返回错误:“无法评估表达式“[System.Version]::Parse('')”。版本字符串部分太短或太长。C:\Users\robpi\source\repos\UnitTestProject1\包\coverlet.msbuild.3.1.0\build\coverlet.msbuild.targets

coverlet.msbuild 不安装

注意:我尝试安装早期版本(2.7.0) - 结果相同

0 投票
0 回答
54 浏览

code-coverage - 带有 Coverlet 的代码覆盖率 int .NET 5 Web API

我已经将 Web Api 构建为 .NET 5.0。

Web API 结构:

  • 主 Web 项目(包含控制器和其他客户端特定数据)
  • 基础设施项目(它具有更多业务逻辑的服务和存储库)
  • 模型(数据库实体)
  • 测试(用 Xunit 编写的测试用例)
  • 我还添加了 XUnit.Coverlet.Collector 和 XUnit.Coverlet.MSBuild 项目。

问题:

  • 我不确定如何引导 Coverlet 使用在Tests项目中编写的现有测试到主应用程序的控制器。

  • 现在,我刚刚在 web api 中创建了一个控制器,并在收集器和 msbuild 项目中对其进行了测试。这工作正常,我可以为这个控制器生成代码覆盖,即 PrimeController.cs(然后还有其他类和控制器在报告中没有覆盖。)

  • 如果我遵循这个工作流程,我必须在两个项目中复制所有测试两次。

  • 有没有什么办法可以将我的 Tests 项目的引用提供给 msBuild 和 Collector?

在此处输入图像描述)

任何帮助将非常感激。

0 投票
0 回答
68 浏览

c# - 测试项目中文件的 C# 代码覆盖率

我有一个项目A,我在 test project 中为它编写了单元测试UnitTests。我使用 MSTest。

我在文件中写了一些测试工具UnitTestUtils.cs来简化测试项目A。我还用单元测试介绍了这些实用程序。

现在的文件结构是

  • 一个
    • 程序.cs
  • 单元测试
    • 实用程序
      • UnitTestUtils.cs
    • Tests.cs <- (A_SomeTest1, A_SomeTest2, ...)
    • UtilsTests.cs <- (Utils_SomeTest1, ...)

所有测试A都以 . 为前缀A_,所有 utils 测试都以 . 为前缀Utils_

我想在本指令中使用like来运行测试工具的代码覆盖率。我可以为要运行的测试指定一个前缀 using ,但代码覆盖率不是我的测试工具的覆盖率,而是项目的覆盖率。coverlet.collectordotnet test --filter UtilsA

如何为我的测试工具运行代码覆盖率?

0 投票
1 回答
28 浏览

testing - TeamCity + 报表生成器

早上好家伙

我正在使用 Coverlet 在 TeamCity 中运行我的测试。在我运行要生成报告的测试后,这工作正常。

上面的解决方案在本地工作,但是在 TeamCity 我有以下错误:

reportgenerator :术语“reportgenerator”未被识别为 cmdlet、函数、脚本文件或可运行程序的名称。检查名称的拼写,或者如果包含路径,请验证路径是否正确并重试。

有什么我想念的想法吗?

0 投票
0 回答
35 浏览

.net - Coverlet 代码覆盖适用于 F# 项目,但不适用于 C# 和 VB

我正在尝试构建一个大型单存储库并在 Azure DevOps 中获得代码覆盖率结果。代码是 C#、VB 和 F# 的混合体,主要针对 .NET4.8 和一些 netstandard2.0。

前段时间,我使用 MS Build 构建解决方案的过程使用代码覆盖率进行部分 CI 构建,然后通过 dotnet test 和coverlet.collector 进行测试,如this answer中所述。

在我们决定尝试从 MS 托管代理迁移到自托管虚拟机规模集之前,此解决方案运行良好。使用库存的 Azure Marketplace Visual Studio 企业映像和带有 Visual Studio 构建工具的自定义映像,管道在很大程度上已停止产生结果。奇怪的是,它确实为 5 个左右的 F# 项目产生了代码覆盖率结果,但对于构​​成大部分代码库的 C#/VB 项目没有结果,并且没有产生错误消息。

单元测试的预期数量会报告给 Azure DevOps,因此看起来所有测试都在运行,但只有 F# 的测试具有代码覆盖率,即使所有 dll 都使用相同的命令进行测试。在本地运行的相同命令也会产生覆盖结果,所以我认为它一定是安装在 MS 托管代理和我的 VS Enterprise 机器上的映像中缺少某些组件。

我查看了MS Build Tools 文档和MS Hosted 代理的 repo,但我很难弄清楚缺少什么?

0 投票
0 回答
100 浏览

c# - 排除 ef 核心迁移文件的代码覆盖率

我想从代码覆盖率计算中排除所有自动生成的迁移文件。我无法更改dotnet test构建管道中的命令,所以我想我唯一的朋友就是[ExcludeFromCodeCoverage]属性。

棘手的部分是,每次添加新迁移时,我都需要手动查看所有生成的文件并确保我[ExcludeFromCodeCoverage]对所有生成的类都有属性,这很好,但我想知道是否有更好的解决方案,我可以一次性完成全部?

迁移文件

和 ModelSnapshot 文件

对于快照文件,由于类名始终相同,我可以创建一个单独的文件MyContextModelSnapshot.CodeCoverage.cs文件并将属性放在部分类上,但是迁移文件有解决方案吗?

coverlet.msbuild如果这很重要,我正在合作。

0 投票
0 回答
7 浏览

sonarqube - Coverlet/Sonarqube 将覆盖的代码显示为未覆盖

我们的代码库中有很多手动映射的类(原因)。我们使用 Coverlet 向 SonarQube 报告覆盖率,以便通过失败构建进行覆盖。在我们大约 40% 的映射方法中,它被错误地报告为未发现代码并导致我们的构建失败。

我通过反复试验发现,更改代码结构会影响 Coverlet 报告覆盖/未覆盖行的方式。所有代码在功能上都是等效的,因为我们不得不求助于代码扭曲来让我们的构建通过。这对我们来说似乎是错误的,上级希望我向 Coverlet 提交错误报告。在这样做之前,我想知道我们是否缺少某些东西。

我在下面包含了 SonarQube 报告的屏幕截图,以显示如何根据代码结构报告覆盖率。我们是否遗漏了一些明显的东西?

原始失败代码

版本 2 失败

版本 3 失败

第4版通过

0 投票
1 回答
34 浏览

c# - 无法添加 Coverlet nuget 包 - 版本字符串部分太短或太长

当我尝试添加coverlet.msbuild到我的测试项目时,我收到此错误:

我确实看到我的 csproj 发生了变化:

但是对 没有任何更改packages.config,因此看起来实际上并未安装 nuget。

我正在尝试将其添加到 .net 4.8 测试项目中。

关于可能导致这种情况的任何想法?

0 投票
0 回答
49 浏览

msbuild - 使用 Visual Studio 17.1 从控制台运行单元测试时出错

从命令行运行单元测试时出现以下错误。这在 Windows 10 机器上运行良好,在 Windows 7 中失败。

致命错误。System.AccessViolationException:试图读取或写入受保护的内存。这通常表明其他内存已损坏。在 System.Reflection.RuntimeAssembly.InternalLoad(System.Runtime.CompilerServices.ObjectHandleOnStack,System.Runtime.CompilerServices.ObjectHandleOnStack,System.Runtime.CompilerServices.StackCrawlMarkHandle,布尔,System.Runtime.CompilerServices.ObjectHandleOnStack,System.Runtime.CompilerServices.ObjectHandleOnStack ) 在 System.Reflection.RuntimeAssembly.InternalLoad(System.Reflection.AssemblyName, System.Reflection.RuntimeAssembly, System.Threading.StackCrawlMark ByRef, Boolean, System.Runtime.Loader.AssemblyLoadContext) 在 System.Reflection.Assembly.Load(System. Reflection.AssemblyName) 在 Microsoft.VisualStudio.TestPlatform.Common.ExtensionFramework.TestPluginCache。2<System.String,System.__Canon>) at Microsoft.VisualStudio.TestPlatform.Common.ExtensionFramework.TestPluginDiscoverer.GetTestExtensionsFromFiles[[System.__Canon, System.Private.CoreLib, Version=6.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e],[System.__Canon, System.Private.CoreLib, Version=6.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]](System.String[], System.Collections.Generic.Dictionary2<System.String,System.__Canon>) 在 Microsoft.VisualStudio.TestPlatform.Common.ExtensionFramework.TestPluginDiscoverer.GetTestExtensionsInformation[System.__Canon, System.Private.CoreLib, Version=6.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e] ,[System.__Canon, System.Private.CoreLib, Version=6.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e] 在 Microsoft.VisualStudio.TestPlatform.Common.ExtensionFramework.TestPluginCache.GetTestExtensions[System.__Canon, System.Private.CoreLib ,版本=6.0.0.0,文化=中性,PublicKeyToken=7cec85d7bea7798e],[System.__Canon,System.Private.CoreLib,版本=6.0.0.0,文化=中性,PublicKeyToken=7cec85d7bea7798e] 在 Microsoft.VisualStudio.TestPlatform.Common。 ExtensionFramework.TestPluginCache.DiscoverTestExtensions[System.__Canon, System.Private.CoreLib, Version=6.0.0.0, Culture=neutral,PublicKeyToken=7cec85d7bea7798e],[System.__Canon, System.Private.CoreLib, Version=6.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e] 在 Microsoft.VisualStudio.TestPlatform.Common.Hosting.TestRuntimeExtensionManager.Create(Microsoft.VisualStudio.TestPlatform .ObjectModel.Logging.IMessageLogger) 在 Microsoft.VisualStudio.TestPlatform.Common.Hosting.TestRuntimeProviderManager.get_Instance() 在 Microsoft.VisualStudio.TestPlatform.CrossPlatEngine.TestEngine..ctor() 在 Microsoft.VisualStudio.TestPlatform.Client.TestPlatform.. ctor() 在 Microsoft.VisualStudio.TestPlatform.Client.TestPlatformFactory.GetTestPlatform() 在 Microsoft.VisualStudio.TestPlatform.CommandLine.TestPlatformHelpers.TestRequestManager..ctor() 在 Microsoft.VisualStudio.TestPlatform.CommandLine.TestPlatformHelpers.TestRequestManager.get_Instance()在 Microsoft.VisualStudio。TestPlatform.CommandLine.Processors.RunTestsArgumentProcessor+<>c.<get_Executor>b__6_0() at System.Lazy1[[System.__Canon, System.Private.CoreLib, Version=6.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]].ViaFactory(System.Threading.LazyThreadSafetyMode) at System.Lazy1[[System.__Canon, System.Private.CoreLib, Version=6.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]].ExecutionAndPublication(System.LazyHelper, Boolean) at System.Lazy 1[[System.__Canon, System.Private.CoreLib, Version=6.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]].CreateValue() at System.Lazy1[[System.__Canon, System. Private.CoreLib,版本=6.0.0.0,文化=中性,PublicKeyToken=7cec85d7bea7798e]].get_Value() 在 Microsoft.VisualStudio.TestPlatform.CommandLine.Processors.ArgumentProcessorFactory+<>c__DisplayClass20_0.b__0() 在 System.Lazy1[[System.__Canon, System.Private.CoreLib, Version=6.0.0.0, Culture=neutral, PublicKeyToken=7cec85d7bea7798e]].CreateValue() at System.Lazy1 [[System.__Canon,System.Private.CoreLib,版本=6.0.0.0,Culture=neutral,PublicKeyToken=7cec85d7bea7798e]].get_Value() 在 Microsoft.VisualStudio.TestPlatform.CommandLine.Executor.GetArgumentProcessors(System.String[] , System.Collections.Generic.List`1<Microsoft.VisualStudio.TestPlatform.CommandLine.Processors.IArgumentProcessor> ByRef) 在 Microsoft.VisualStudio.TestPlatform.CommandLine.Executor.Execute(System.String[]) 在 Microsoft.VisualStudio.TestPlatform .CommandLine.Program.Main(System.String[]) C:\Users\loadbuilder.nuget\packages\coverlet.msbuild\3.1.2\build\coverlet.msbuild.targets(71,5):错误 MSB4044:“ Coverlet.MSbuild.Tasks.CoverageResultTask”任务没有为所需参数“InstrumenterState”指定值。