如何从 Jenkins 的多个测试项目中获取 dotCover 覆盖率报告
How to get dotCover coverage report from multiple test projects in Jenkins
很抱歉这么快又在这个类别中发布另一个问题,但我 运行 遇到了另一个问题。在这里一位好心用户的帮助下,我想出了如何将多个测试项目的结果生成到同一个结果文件中,但现在我需要做同样的事情,但为了 dotcover 代码覆盖率报告。
到目前为止,我运行正在为每个测试项目设置一个批处理命令,因此它看起来像这样:
"C:\Program Files (x86)\Jetbrains\JetBrains.dotCover.CommandLineTools.2017.2.2\dotCover.exe" analyze dotCoverConfig1.xml
"C:\Program Files (x86)\Jetbrains\JetBrains.dotCover.CommandLineTools.2017.2.2\dotCover.exe" analyze dotCoverConfig2.xml
"C:\Program Files (x86)\Jetbrains\JetBrains.dotCover.CommandLineTools.2017.2.2\dotCover.exe" analyze dotCoverConfig3.xml
我觉得我已经很接近了,因为我得到了所有项目的测试结果报告,但是代码覆盖率报告只涵盖了最后一个批处理命令中引用的测试项目,即运行。
我在批处理命令中引用的配置文件除了项目名称外都是相同的,如下所示:
<?xml version="1.0" encoding="utf-8"?>
<AnalyseParams>
<TargetExecutable>C:\Program Files (x86)\NUnit.org\nunit-console\nunit3-console.exe</TargetExecutable>
<TargetArguments>bin\Debug\Project1.Test.Unit.dll --result:TestResult.xml</TargetArguments>
<TargetWorkingDir>Project1.Test.Unit</TargetWorkingDir>
<TempDir><!-- Directory for the auxiliary files. Set to system temp by default. --></TempDir>
<Output>coverage_report.html</Output>
<ReportType>HTML<!-- [HTML|JSON|XML|NDependXML]. A type of the report. XML by default. --></ReportType>
<InheritConsole><!-- [True|False] Lets the application being analysed to inherit dotCover console. True by default. --> </InheritConsole>
<!-- Coverage filters. It's possible to use asterisks as wildcard symbols.
<Filters>
<IncludeFilters>
<FilterEntry>
<ModuleMask> Module mask. </ModuleMask>
<ClassMask> Class mask. </ClassMask>
<FunctionMask> Function mask. </FunctionMask>
</FilterEntry>
</IncludeFilters>
<ExcludeFilters>
<FilterEntry>...</FilterEntry>
<FilterEntry>...</FilterEntry>
<FilterEntry>...</FilterEntry>
</ExcludeFilters>
</Filters>
-->
<!-- Attribute filters. It's possible to use asterisks as wildcard symbols.
<AttributeFilters>
<AttributeFilterEntry>...</AttributeFilterEntry>
<AttributeFilterEntry>...</AttributeFilterEntry>
</AttributeFilters>
-->
</AnalyseParams>
再次抱歉,这么快又发帖了,但是关于这些东西的文档似乎很少,或者我不善于搜索。
提前致谢:)
好吧,我想通了,显然我事先 google 做得不够。 DotCover 在此处提供了使用命令行的指南:https://www.jetbrains.com/help/dotcover/Running_Coverage_Analysis_from_the_Command_LIne.html
最终对我有用的是使用他们在 "To run coverage for multiple projects in separate steps" 下描述的方法,运行 一个批处理命令来获取每个测试项目的覆盖率快照,每个项目都有自己的配置文件,然后合并这些快照,然后报告合并结果。
很抱歉这么快又在这个类别中发布另一个问题,但我 运行 遇到了另一个问题。在这里一位好心用户的帮助下,我想出了如何将多个测试项目的结果生成到同一个结果文件中,但现在我需要做同样的事情,但为了 dotcover 代码覆盖率报告。
到目前为止,我运行正在为每个测试项目设置一个批处理命令,因此它看起来像这样:
"C:\Program Files (x86)\Jetbrains\JetBrains.dotCover.CommandLineTools.2017.2.2\dotCover.exe" analyze dotCoverConfig1.xml
"C:\Program Files (x86)\Jetbrains\JetBrains.dotCover.CommandLineTools.2017.2.2\dotCover.exe" analyze dotCoverConfig2.xml
"C:\Program Files (x86)\Jetbrains\JetBrains.dotCover.CommandLineTools.2017.2.2\dotCover.exe" analyze dotCoverConfig3.xml
我觉得我已经很接近了,因为我得到了所有项目的测试结果报告,但是代码覆盖率报告只涵盖了最后一个批处理命令中引用的测试项目,即运行。
我在批处理命令中引用的配置文件除了项目名称外都是相同的,如下所示:
<?xml version="1.0" encoding="utf-8"?>
<AnalyseParams>
<TargetExecutable>C:\Program Files (x86)\NUnit.org\nunit-console\nunit3-console.exe</TargetExecutable>
<TargetArguments>bin\Debug\Project1.Test.Unit.dll --result:TestResult.xml</TargetArguments>
<TargetWorkingDir>Project1.Test.Unit</TargetWorkingDir>
<TempDir><!-- Directory for the auxiliary files. Set to system temp by default. --></TempDir>
<Output>coverage_report.html</Output>
<ReportType>HTML<!-- [HTML|JSON|XML|NDependXML]. A type of the report. XML by default. --></ReportType>
<InheritConsole><!-- [True|False] Lets the application being analysed to inherit dotCover console. True by default. --> </InheritConsole>
<!-- Coverage filters. It's possible to use asterisks as wildcard symbols.
<Filters>
<IncludeFilters>
<FilterEntry>
<ModuleMask> Module mask. </ModuleMask>
<ClassMask> Class mask. </ClassMask>
<FunctionMask> Function mask. </FunctionMask>
</FilterEntry>
</IncludeFilters>
<ExcludeFilters>
<FilterEntry>...</FilterEntry>
<FilterEntry>...</FilterEntry>
<FilterEntry>...</FilterEntry>
</ExcludeFilters>
</Filters>
-->
<!-- Attribute filters. It's possible to use asterisks as wildcard symbols.
<AttributeFilters>
<AttributeFilterEntry>...</AttributeFilterEntry>
<AttributeFilterEntry>...</AttributeFilterEntry>
</AttributeFilters>
-->
</AnalyseParams>
再次抱歉,这么快又发帖了,但是关于这些东西的文档似乎很少,或者我不善于搜索。 提前致谢:)
好吧,我想通了,显然我事先 google 做得不够。 DotCover 在此处提供了使用命令行的指南:https://www.jetbrains.com/help/dotcover/Running_Coverage_Analysis_from_the_Command_LIne.html
最终对我有用的是使用他们在 "To run coverage for multiple projects in separate steps" 下描述的方法,运行 一个批处理命令来获取每个测试项目的覆盖率快照,每个项目都有自己的配置文件,然后合并这些快照,然后报告合并结果。