如何从命令行运行的Jetbrains dotCover coverage报告中排除xunit测试程序集

时间:2013-03-27 10:06:43

标签: teamcity xunit dotcover

我在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

哪个有效并产生以下报道

My Coverage Report My in depth coverage report

从第二张图片中可以看出,我的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这里的限制


相关问题

1 个答案:

答案 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>

真是太棒了!