2

我正在 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 的限制


相关Q

4

1 回答 1

3

当你写一个问题后不久就会找到答案的情况是多少......

没有过滤器会导致日志中出现以下 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>

什么鬼!

于 2013-03-27T10:52:41.383 回答