问题标签 [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.
.net-core - 未为 dotnet 核心项目生成 Coverlet lcov.info 文件
我正在使用 linux 机器内的 VS 代码处理 dotnet 核心项目。
以下博客生成覆盖率报告: https ://www.hanselman.com/blog/AutomaticUnitTestingInNETCorePlusCodeCoverageInVisualStudioCode.aspx
如前所述,我通过 dotnet 测试参数如下:
并期望生成 lcov.info 文件,但事实并非如此。
我在这里错过了什么吗?
ps:我已经包含了这个包
.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] 属性,这不是最好的方法。
c# - 床单返回 0 % 覆盖率
我正在尝试使用该coverlet
工具来接收我的测试dotnet test
的覆盖率。xunit
xunit 测试UI Automation tests
使用名为Rapise
. 由于 Coverlet 仅适用于 dotnet sdk 风格的项目,我已将 xunit 测试转换为 dotnet sdk 风格的 cs 项目。另外我正在使用一个名为reportgenerator
获取覆盖率报告的工具teamcity
。我已经修改了我的csproj
文件并添加了必要的包引用coverlet
和reportgenerator
包。
这是我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 周了,我还没有找到解决这个问题的方法。
c# - Azure DevOps 构建管道中的 ASP.NET Core Web 应用程序控制器需要 100% 的代码覆盖率
在我们的项目中,我们要求所有控制器方法都应该至少有一个测试。
如果我们的测试失败,我们的构建就会失败,但现在我们正在使用本指南手动检查代码覆盖率:
基本上这意味着运行两个命令:
注意:如果您运行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://gunnarpeipman.com/azure-devops-check-code-coverage/
https://stackoverflow.com/a/60894835/3850405
有什么办法可以很好地做到这一点,还是我们需要阅读coverage.cobertura.xml
文件并查看<class name="Project.Web.Controllers
例如?
c# - 使用被套。Net Framework 生成错误:无法评估表达式“[System.Version]::Parse('')”
我写了一个非常简单的 c# .Net Framework 应用程序和 eddes som 单元测试。现在,尝试使用 Coverlet 检查覆盖范围。收到错误 MSB4184。无法评估表达式“[System.Version]::Parse('')”。版本字符串部分太短或太长。(参数“输入”)。有没有人遇到这样的错误?
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/*/
到某个确定性的地方?
azure-devops - VSTest@2 任务正在更新/覆盖coverlet.runsettings 并且不尊重排除项
我正在尝试将代码覆盖率添加到 Azure DevOps 中的 .NET Framework 4.8 解决方案。我的方法基于这里和这里的问题以及coverlet docs,并且成功地获得了代码覆盖率结果。
但是,此解决方案还包含许多共享项目,这些项目在不同的解决方案中进行了单元测试。我希望从覆盖率报告中排除这些项目以及测试项目本身。
在我的coverlet.runsettings 文件中,我根据文档包含了以下几行:
但是,当使用 VSTest@2 运行测试时,我在日志中看到以下内容
所以看起来VS测试任务正在改变我的运行设置,然后不尊重包含和排除值
我的yaml是:
任何人都可以建议设置或其他方式来尊重包含和排除吗?
yaml - 将覆盖信息从 C# 项目的 Coverlet 上传到 SonarCloud
我正在尝试收集覆盖信息并将其发布到我的 C# 项目的 SonarCloud,使用 GitHub Actions 作为我的 CI 管道。执行很简单,基本上是尝试对所有项目执行测试,合并所有覆盖文件:
请注意,我确实需要同时输出opencover
和json
格式。coverlet
似乎只有正确合并是json
输出格式之一,因此它可以opencover
最终将其转换为。
问题是,这不会在 CI 上生成覆盖信息 - 下载工件显示没有生成的文件夹或文件。但是,如果只是 pass /p:CoverletOutputFormat=opencover
,则所有覆盖信息都会在 CI 上生成 - 但由于没有json
输出而无法正确合并。
在本地,命令
正常工作并生成正确的覆盖 XML 文件。
可能是什么问题,为什么它不适用于为 CI 指定的两种覆盖格式?最初我以为我不知道在 YAML 中转义引号,但这里似乎并非如此。