问题标签 [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 投票
1 回答
764 浏览

.net-core - 未为 dotnet 核心项目生成 Coverlet lcov.info 文件

我正在使用 linux 机器内的 VS 代码处理 dotnet 核心项目。

以下博客生成覆盖率报告: https ://www.hanselman.com/blog/AutomaticUnitTestingInNETCorePlusCodeCoverageInVisualStudioCode.aspx

如前所述,我通过 dotnet 测试参数如下:

并期望生成 lcov.info 文件,但事实并非如此。

我在这里错过了什么吗?

ps:我已经包含了这个包

0 投票
1 回答
547 浏览

.net-core - 如何在 .Net Standard 2.1 项目的程序集级别添加 [ExcludeFromCodeCoverage] 属性

我有一个 .Net Core 应用程序,其中包含一个 .Net Standard 2.1 项目。我正在使用 Coverlet 来获取 Cobertura 格式的代码覆盖率。

我在所有测试项目中都使用“coverlet.msbuild”nuget 包。

我想在程序集级别添加 [ExcludeFromCodeCoverage] 属性,以便 Coverlet 在执行分析时忽略此项目。

我在 .Net Core / .Net Standard 项目中找不到 AssemblyInfo.cs 文件。

我尝试在 proejct 的 .csproj 文件中添加以下标签

但仍然没有运气。

对我来说唯一的解决方法是在所有类文件中手动添加 [ExcludeFromCodeCoverage] 属性,这不是最好的方法。

0 投票
0 回答
72 浏览

c# - 床单返回 0 % 覆盖率

我正在尝试使用该coverlet工具来接收我的测试dotnet test的覆盖率。xunitxunit 测试UI Automation tests使用名为Rapise. 由于 Coverlet 仅适用于 dotnet sdk 风格的项目,我已将 xunit 测试转换为 dotnet sdk 风格的 cs 项目。另外我正在使用一个名为reportgenerator获取覆盖率报告的工具teamcity。我已经修改了我的csproj文件并添加了必要的包引用coverletreportgenerator包。

这是我csproj file properties添加被套后的样子:

在此处输入图像描述

teamcity server我正在执行以下代码:

"C:\Program Files\dotnet\dotnet.exe" test D:\BuildAgent\work\workdir\Solution\XUnitTests.UITests1\UITests1.csproj --configuration Release --no-build --verbosity Normal /property:CollectCoverage=True /property:CoverletOutput=D:\BuildAgent\work\workdir\Solution\XUnitTests.UITests1\CoverageReport\UITests1.opencover.xml /property:CoverletOutputFormat=opencover

我使用的测试报告格式是opencover

这是我得到的报道:

在此处输入图像描述

我以前尝试过使用dotcover。它会产生适当的覆盖率,但由于内存使用率高,它往往会崩溃。现在已经 4 周了,我还没有找到解决这个问题的方法。

0 投票
1 回答
363 浏览

unit-testing - 未找到模块测试路径

我正在尝试配置GitHub 操作

我的操作包含通过收集代码覆盖率来运行单元测试的作业。正如我在日志中看到的:

尽管如此,在这些行之后,日志包含一条错误消息:

作业失败。

我试着跑

在我的本地机器(MS Windows)上并没有收到此错误。

任何帮助是极大的赞赏。

0 投票
1 回答
603 浏览

c# - Azure DevOps 构建管道中的 ASP.NET Core Web 应用程序控制器需要 100% 的代码覆盖率

在我们的项目中,我们要求所有控制器方法都应该至少有一个测试。

如果我们的测试失败,我们的构建就会失败,但现在我们正在使用本指南手动检查代码覆盖率:

https://docs.microsoft.com/en-us/dotnet/core/testing/unit-testing-code-coverage?tabs=windows#generate-reports

基本上这意味着运行两个命令:

注意:如果您运行dotnet test --collect:"XPlat Code Coverage",您可以获得一个coverage.cobertura.xml文件,但如果您使用 msbuild,/p:CollectCoverage=true则必须将包添加dotnet add package coverlet.msbuild到测试项目一次。

https://github.com/coverlet-coverage/coverlet/issues/201

然后我们得到这样的报告:

在此处输入图像描述

在这种情况下,我们的线路覆盖率不是很好,但我们的控制器有 100% 的线路覆盖率。检查一个特定的命名空间Project.Web.Controllers是否具有 100% 的行覆盖率是可以的。

我们不能使用正常的代码覆盖率结果来使构建失败,因为我们只想在未测试控制器的情况下使构建失败。

https://docs.microsoft.com/en-us/azure/devops/pipelines/test/review-code-coverage-results?view=azure-devops

https://gunnarpeipman.com/azure-devops-check-code-coverage/

https://stackoverflow.com/a/60894835/3850405

有什么办法可以很好地做到这一点,还是我们需要阅读coverage.cobertura.xml文件并查看<class name="Project.Web.Controllers例如?

0 投票
0 回答
249 浏览

c# - 使用 dotnet test cli 的净核心覆盖率始终为 0%

我正在尝试使用以下命令行提取覆盖范围:

但我总是得到 0% 的覆盖率: 在此处输入图像描述

这是我的 csproj 文件:

我正在使用 Rider,所以运行 dotCover 我可以正常覆盖,请参阅:

在此处输入图像描述

0 投票
2 回答
659 浏览

c# - 使用被套。Net Framework 生成错误:无法评估表达式“[System.Version]::Parse('')”

我写了一个非常简单的 c# .Net Framework 应用程序和 eddes som 单元测试。现在,尝试使用 Coverlet 检查覆盖范围。收到错误 MSB4184。无法评估表达式“[System.Version]::Parse('')”。版本字符串部分太短或太长。(参数“输入”)。有没有人遇到这样的错误?

0 投票
1 回答
160 浏览

xaml - 在 Github Action 中解析 VSTest 输出并用作 YAML 变量

我非常接近这项工作,但我不知道足够的 yaml-foo 来查看解决方案。

很明显,没有办法告诉 Coverlet ( https://github.com/coverlet-coverage/coverlet ) 不要在结果路径中使用随机 GUID:

图片 (来自https://github.com/coverlet-coverage/coverlet/blob/master/Documentation/VSTestIntegration.md)。

我正在做一堆代码覆盖率报告,作为其中的一部分,我想使用https://github.com/simon-k/dotnet-code-coverage-badge为项目生成一个 GitHub 徽章。

我的构建工作流程:

徽章工具需要 opencover.xml 文件的路径。我可以很好地生成文件,但它最终在一个文件夹UnitTests/TestResults/<UUID>/coverage.opencover.xml中。

根据上述内容,我不能(显然)改变 VSTest 的行为。所以我需要想办法将输出中的 UUID 捕获到变量中并在path:.

那个 UUID 就在测试运行结果中,我只需要以某种方式抓住它:

图片

这可能吗?或者,是否有某种方法可以使用通配符执行复制命令,将其内容复制UnitTest/TestResults/*/到某个确定性的地方?

0 投票
1 回答
292 浏览

azure-devops - VSTest@2 任务正在更新/覆盖coverlet.runsettings 并且不尊重排除项

我正在尝试将代码覆盖率添加到 Azure DevOps 中的 .NET Framework 4.8 解决方案。我的方法基于这里这里的问题以及coverlet docs,并且成功地获得了代码覆盖率结果。

但是,此解决方案还包含许多共享项目,这些项目在不同的解决方案中进行了单元测试。我希望从覆盖率报告中排除这些项目以及测试项目本身。

在我的coverlet.runsettings 文件中,我根据文档包含了以下几行:

但是,当使用 VSTest@2 运行测试时,我在日志中看到以下内容

所以看起来VS测试任务正在改变我的运行设置,然后不尊重包含和排除值

我的yaml是:


任何人都可以建议设置或其他方式来尊重包含和排除吗?

0 投票
0 回答
164 浏览

yaml - 将覆盖信息从 C# 项目的 Coverlet 上传到 SonarCloud

我正在尝试收集覆盖信息并将其发布到我的 C# 项目的 SonarCloud,使用 GitHub Actions 作为我的 CI 管道。执行很简单,基本上是尝试对所有项目执行测试,合并所有覆盖文件:

请注意,我确实需要同时输出opencoverjson格式。coverlet似乎只有正确合并是json输出格式之一,因此它可以opencover最终将其转换为。

问题是,这不会在 CI 上生成覆盖信息 - 下载工件显示没有生成的文件夹或文件。但是,如果只是 pass /p:CoverletOutputFormat=opencover,则所有覆盖信息都会在 CI 上生成 - 但由于没有json输出而无法正确合并。

在本地,命令

正常工作并生成正确的覆盖 XML 文件。

可能是什么问题,为什么它不适用于为 CI 指定的两种覆盖格式?最初我以为我不知道在 YAML 中转义引号,但这里似乎并非如此。