我在TeamCity上运行我的CI构建,并且我正在尝试获取我的覆盖率报告以排除我的测试dll。这是我的exec命令格式化的可读性。
我已经在所有团队城市代理商上为dotCover 2.0安装了xUnit contrib dll
dotCover.exe
cover
/TargetExecutable="Path/To/XUnit/Runner"
/TargetArguments="My/Test/Assembly/Path"
/Output=coverage.dcvr
哪个有效并产生以下报道
从第二张图片中可以看出,我的Web.Tests dll包含在覆盖率报告中。 我已经尝试了以下过滤掉测试dll
dotCover.exe
cover
/TargetExecutable="Path/To/XUnit/Runner"
/TargetArguments="My/Test/Assembly/Path"
/Output=coverage.dcvr
/Filters=-:module=MyAssembly.Web.Tests;
/Filters=-:*.Tests
/Filters=-:MyAssembly.Web.Tests
/Filters=-:module=MyAssembly.Web.Tests
这些在日志中生成以下xml
<DenyFilters>
<Item>
<AssemblyOrModuleFilter>MyAssembly.Web.Tests</AssemblyOrModuleFilter>
<ClassFilter>*</ClassFilter>
<FunctionFilter>*</FunctionFilter>
</Item>
</DenyFilters>
然而,这会阻止所有报道的内容
我正在使用dotCover v2.0.425.72。
我想我可能已经找到了dotcover和xunit这里的限制
相关问题
答案 0 :(得分:1)
当你写一个问题后,你很快就会发现答案的情况......
没有过滤器会在日志中产生以下xml
<AllowFilters>
<Item>
<AssemblyOrModuleFilter>*</AssemblyOrModuleFilter>
<ClassFilter>*</ClassFilter>
<FunctionFilter>*</FunctionFilter>
</Item>
</AllowFilters>
<DenyFilters />
添加行/Filters=-:module=MyAssembly.Web.Tests
会将xml更改为导致不报告任何内容,因为允许过滤器被终止。
<AllowFilters />
<DenyFilters>
<Item>
<AssemblyOrModuleFilter>MyAssembly.Web.Tests</AssemblyOrModuleFilter>
<ClassFilter>*</ClassFilter>
<FunctionFilter>*</FunctionFilter>
</Item>
</DenyFilters>
因此修复程序为/Filters=+:module=*;class=*;function=*;-:module=MyAssembly.Web.Tests;
,它提供以下xml
<AllowFilters>
<Item>
<AssemblyOrModuleFilter>*</AssemblyOrModuleFilter>
<ClassFilter>*</ClassFilter>
<FunctionFilter>*</FunctionFilter>
</Item>
</AllowFilters>
<DenyFilters>
<Item>
<AssemblyOrModuleFilter>MyAssembly.Web.Tests</AssemblyOrModuleFilter>
<ClassFilter>*</ClassFilter>
<FunctionFilter>*</FunctionFilter>
</Item>
</DenyFilters>
真是太棒了!