我很容易地将其配置为在Azure DevOps中获得.NET Core项目的覆盖结果,但.NET Framework项目没有任何进展。
因此,我将非常感谢在这方面得到建议,因为coverlet文档明确表示,我们也可以将其用于.NET Framework项目。这个问题有点类似于我的问题,但我没有看到任何答案,在.NET框架项目中,可以使用Coverlet获取代码覆盖率数据吗?
发布于 2020-03-18 14:43:19
最后,我找到了一个更简单的解决方案。在这里,
<IsTestProject>true</IsTestProject>。dotnet test/dotnet test /p:CollectCoverage=true的地方)运行推荐的TestProject.csproj<Import Project="$(VSToolsPath)\WebApplications\Microsoft.WebApplication.targets" Condition="'$(VSToolsPath)' != ''" />
To,<Import Project="$(VSToolsPath)\TeamTest\Microsoft.TestTools.targets" Condition="Exists('$(VSToolsPath)\TeamTest\Microsoft.TestTools.targets')" />这既适用于本地,也适用于Azure DevOps。
注意:不要忘记在您的测试项目中安装Coverlet.msbuild。
更新:
只有当您没有得到".Microsoft.WebApplication.targets未找到“错误时,上述方法才能起作用。注释建议的导入语句将导致发布在最后失败,这是显而易见的。因此,我最终使用了Coverlet.Console,它运行顺利,没有任何错误。但是,要使用coverlet.console,我需要TestProject.dll文件而不是项目文件(.csproj);因此我不得不为测试项目添加额外的构建任务。这里是如何安装和使用Coverlet.console的文档。
希望这对那些最终登陆这里的人会有帮助。
发布于 2020-03-17 09:10:00
是的,您可以从ASP.NET项目中编码覆盖率数据。这很简单,就像@riQQ在这条线中建议的那样。
以下内容是为补充和复制@riQQ的答案在上面的线程。
编写了webform应用程序和.net框架单元测试,在repo中添加了coverlet.runsettings文件,内容引用VSTest集成支持的掩护选项。
<?xml version="1.0" encoding="utf-8" ?>
<RunSettings>
<DataCollectionRunSettings>
<DataCollectors>
<DataCollector friendlyName="XPlat code coverage">
<Configuration>
<Format>json,cobertura</Format>
<Exclude>[coverlet.*.tests?]*,[*]Coverlet.Core*</Exclude> <!-- [Assembly-Filter]Type-Filter -->
<Include>[coverlet.*]*,[*]Coverlet.Core*</Include> <!-- [Assembly-Filter]Type-Filter -->
<ExcludeByAttribute>Obsolete,GeneratedCodeAttribute,CompilerGeneratedAttribute</ExcludeByAttribute>
<ExcludeByFile>../dir1/class1.cs,../dir2/*.cs,../dir3/**/*.cs,</ExcludeByFile> <!-- Absolute or relative file paths -->
<IncludeDirectory>../dir1/,../dir2/,</IncludeDirectory>
<SingleHit>false</SingleHit>
<UseSourceLink>true</UseSourceLink>
<IncludeTestAssembly>true</IncludeTestAssembly>
</Configuration>
</DataCollector>
</DataCollectors>
</DataCollectionRunSettings>
</RunSettings>配置VSTest任务:

它可以成功地生成覆盖文件:
Passed TestMethod1
Results File: D:\a\_temp\TestResults\VssAdministrator_fv-az38_2020-03-17_07_53_28.trx
Attachments:
D:\a\_temp\TestResults\*******-****-****-****-**********\VssAdministrator_fv-az38 2020-03-17 07_53_18.coverage
Total tests: 1. Passed: 1. Failed: 0. Skipped: 0.
Test Run Successful.注意:如果要在自托管代理上运行此构建,可能需要确保安装了VS Enterprise,请参阅在自托管代理上“找不到CodeCoverage.exe”。
https://stackoverflow.com/questions/60707310
复制相似问题