【发布时间】:2018-01-13 09:26:09
【问题描述】:
我将 dotCover 配置为从我们的 GitLab CI 服务器运行。
它正确运行测试,生成所需的输出,并且 CI 配置为将覆盖范围 HTML 输出存储在 GitLab 工件中。这完美无缺。
我要做的是从 dotCover.exe 控制台运行程序读取总覆盖率输出并在 gitlab CI 中解析它。我阅读了 dotCover documentation 但我没有找到将包含覆盖范围的行输出到控制台的方法。 Gitlab CI 只能从 ci 作业的 sdout 中读取覆盖率值,并将其与自定义正则表达式匹配。
这是我的config.xml:
<?xml version="1.0" encoding="utf-8"?>
<AnalyseParams>
<TargetExecutable>C:\NUnit\nunit3-console.exe</TargetExecutable>
<TargetArguments>--agents=1 MyDll.Spec.dll MyDll2.Spec.dll</TargetArguments>
<Output>cover/AppCoverageReport.html</Output>
<ReportType>html</ReportType>
<Scope>
<ScopeEntry>MyApp\bin\x86\Release\net461\MyApp.*.dll</ScopeEntry>
<ScopeEntry>MyApp\bin\x86\Release\net461\*.exe</ScopeEntry>
</Scope>
<Filters>
<ExcludeFilters>
<FilterEntry>
<ModuleMask>*.Spec</ModuleMask>
</FilterEntry>
</ExcludeFilters>
</Filters>
</AnalyseParams>
我用 .gitlab-ci.yml 运行它:
C:\dotCover\dotCover.exe analyse config.xml /TargetWorkingDir=.
有没有办法在 GitLab CI 中查看这个值?我错过了什么明显的东西吗?
谢谢
【问题讨论】:
-
我对 jacoco 也有同样的问题。它还创建了一个包含覆盖文件的 HTML 文件,我用
xmllint(在 Linux 下)对其进行了解析。我强烈建议在涉及 xml/html 时避免使用正则表达式。 -
@YanFoto 感谢您的输入,这个特殊的 HTML 很容易解析,总覆盖范围在 JS 部分的开头,所以我使用了一个非常简单的正则表达式:
/= \[\["Total",\d+\.?\d+/,但我没有根本不喜欢这个解决方案。我会尝试使用更好的解析工具,dotCover仅适用于 Windows。