问题标签 [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 - 如何在不使用 Sdk 样式项目的 .NET 项目上运行 Coverlet?
我想试试coverlet,但我能找到的唯一例子是关于运行它dotnet.exe
。我的问题是我们的项目不使用 Sdk 样式,它们是针对 .NET 4.7.2 的旧 .NET 项目
我怎样才能和他们一起跑床单?
.net-core - 是什么导致 Docker 映像中出现“找不到数据收集器‘XPlat 代码覆盖率’”错误?
我在 DevOps Server 中设置了一个构建,它只运行一个 docker 构建、运行一个容器并从中收集测试结果。Dockerfile 使用 mcr.microsoft.com/dotnet/core/sdk:2.2 映像作为其基础,在此基础上我安装了 powershell。
运行基础镜像并执行dotnet --version
确认它上面有 .NET Core 2.2.301。我的测试项目引用了coverlet.collector 1.0.1 和Microsoft.NET.Test.Sdk 16.1.0。从我看到的 Coverlet 文档来看,这应该足以生成测试覆盖率结果。
当我不使用 Coverlet 时,我的测试运行良好并生成预期的 trx 文件。
这是我的 dockerfile 的简化版本:
这是运行命令:
docker run -v "c:\testresults:C:\app\webapiapp.test\out\TestResults" --rm myrepo/webapiapp:$(BUILD.BUILDID)-test
这是 webapiapp.test.csproj:
我得到“找不到数据收集器'XPlat Code Coverage'”而不是覆盖率文件。我错过了什么?
.net - .net 核心和全局阈值中未测试项目的代码覆盖率
我设置了一个 Azure DevOps CI 管道来收集使用 Coverlet 获得的代码覆盖率。我注意到,如果项目以某种方式被项目测试,报告将包含有关未测试的类/代码的信息,但例如,如果开发人员添加了一个没有相应测试项目的新项目,则代码不会显示在最终报告中。此外,似乎只能为每个测试项目指定阈值(例如,我可以有一个由两个不同的测试项目测试的项目:两者都有助于原始项目的代码覆盖率统计)。我正在使用“PublishCodeCoverageResults”管道任务来发布代码覆盖率结果。如果整体代码覆盖率没有达到特定阈值,有没有办法让 CI 构建失败?
powershell - 为什么 dotnet 测试工具不创建代码覆盖率报告?
我的项目结构如下:
运行我的测试的命令我使用以下输入:
在哪里$folder
指向我的 Application.Tests 路径:C:\projects\coredemoapp\CoreDemoApp.Tests
和$root
C:\projects\coredemoapp\
所有测试都成功运行。但是,问题是coverage.json
也coverage.opencover.xml
没有创建文件。
我也尝试coverlet
直接使用以下命令:
,一切都在我的本地机器上运行,具有指向 dll 的显式路径。但是在以前面的命令运行命令的情况下$folder.FullName
,<path to assembly>
coverlet 假定一个调试dll 的路径,而不是它应该的发布版本并且失败。
windows - CMD - 忽略引号内的空格
我知道这是一个非常琐碎的问题。我已经尝试过并且失败了。
虽然它与问题无关,但我想做的是使用coverlet.console 为应用程序获取代码覆盖率,如下所示:
targetargs 是从 Coverlet 内部调用的。这里,vstest是宿主系统中的一个环境变量。但是,我不能也不想设置那个 env 变量,所以我尝试使用 exe 的路径直接调用,如下所示:
现在,我无法使用此变量访问该 exe,因为路径中的空格不会被忽略。
我可以在这里做什么来获取参数字符串中的那个 exe 文件?
更新:
根据评论,这样做我能够达到预期的结果。
yaml - 在 macOS DevOps 管道中运行 Coverlet 和报告生成器
我有一个用 dotnet core 2.1 编写的 C# 项目,我正在尝试为其设置 Azure 管道,以便在 macOS 代理上运行时获得代码覆盖率(我可以更改为其他代理,但理想情况下管道是系统不可知论者)。到目前为止,我一直试图让Coverlet和reportgenerator一起工作,但我一直遇到问题,例如Could not find data collector 'XPlat Code Coverage'
.
我想要发生的是确定代码覆盖率(似乎是哪个coverlet),并以某种方式在Azure管道中生成和显示代码覆盖率报告。
这是我到目前为止的管道:
azure-pipelines - 使用 Azure Pipelines 和 Coverlet 创建测试报告不会创建 coverage.opencover.xml 文件
这是我的解决方案结构:
构建脚本工作正常,但我无法让它coverage.opencover.xml
在根文件夹中创建封面结果作为格式。
我的 azure-pipelines.yml:
结果,我得到了该Testing **/*.UnitTests/*.csproj
任务的以下输出:
开始:测试 **/ .UnitTests/ .csproj ======================================= ======================================== 任务:.NET Core 描述:构建,测试,打包,或发布 dotnet 应用程序,或运行自定义 dotnet 命令 版本
:2.162.0 作者:Microsoft Corporation 帮助: https ://docs.microsoft.com/azure/devops/pipelines/tasks/build/dotnet-core-cli ==================================================== ============================= C:\windows\system32\chcp.com 65001 活动代码页:65001 "C:\Program Files \dotnet\dotnet.exe" 测试 d:\a\1\s\BlazorApp.UnitTests\BlazorApp.UnitTests.csproj --logger trx --results-directory d:\a_temp --configuration Release /p:CollectCoverage=true / p:CoverletOutput=d:\a\1\coverage /p:CoverletOutputFormat=opencover /p:Exclude=[ Tests] d:\a\1\s\BlazorApp.UnitTests\bin\Release\netcoreapp3.1\ 的测试运行BlazorApp.UnitTests.dll(.NETCoreApp,Version=v3.1) Microsoft (R) 测试执行命令行工具版本 16.3.0 版权所有 (c) Microsoft Corporation。版权所有。开始测试执行,请稍候...
共有 1 个测试文件与指定的模式匹配。结果文件:d:\a_temp\VssAdministrator_fv-az74_2019-12-25_11_32_03.trx
试运行成功。总测试:1 通过:1 总时间:1.5842 秒
问题是coverage.opencover.xml
即使yml
参数定义了应该执行的封面设置,也没有创建文件。如果codecov.ps1
PowerShell 脚本可以找到现在丢失的测试结果文件,它就会起作用。
c# - 当覆盖率太低(使用 C# 和 dotnet 测试)时,如何使 Jenkins 阶段失败并变红?
我正在使用 C#、coverlet.msbuild 和 Jenkins Cobertura 适配器。我的 Jenkinsfile 中大致有这个:
如果包级别的覆盖率低于 50%,这会使我的 Jenkins 构建失败。到现在为止还挺好。
但是,当构建因此而失败时,它是对用户不利的并且很难理解为什么。Blue Ocean 中的“运行单元测试”阶段为绿色。
当构建失败时,我可以让这个阶段变成红色,以便更容易看到错误是什么?
.net - 即使未达到阈值,Coverlet 也始终返回 0
我在我的 Linux CI 盒子里运行 Coverlet。现在,在我运行下面的命令之后,无论是否满足阈值,当我检查 $? 值,该命令始终返回 0。
如果所有测试都通过,并且单元测试覆盖率高于阈值,我需要 Coverlet 返回 0,如果任何测试失败或未达到阈值,则返回 1。
有没有人以前见过这个问题,或者知道如何解决它?谢谢!
.net - dotnet 工具版本在哪里定义?
dotnet 工具是如何进行版本化的,该版本号在代码中设置在哪里?
这个 dotnet 工具的最新版本是 1.7.0 https://github.com/tonerdo/coverlet
1.7.0 在哪里定义?我在任何地方都没有看到它,它不是汇编版本
我想安装旧版本,但我可以找到列出工具以前版本的任何 dotnet 命令。
具体来说,我需要一个支持netcoreapp2.1的coverlet版本