Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/unit-testing/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/tfs/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Unit testing 如何使TFS构建不测量第三方程序集的覆盖率_Unit Testing_Tfs_Code Coverage - Fatal编程技术网

Unit testing 如何使TFS构建不测量第三方程序集的覆盖率

Unit testing 如何使TFS构建不测量第三方程序集的覆盖率,unit-testing,tfs,code-coverage,Unit Testing,Tfs,Code Coverage,我如何让我的CI构建停止测量我们在解决方案中的项目中没有编写的代码(程序集)的覆盖率 我们在TFS构建定义中为解决方案的CI构建打开了代码覆盖率。当我们在VisualStudio中本地运行代码覆盖率时,我们正确地报告了解决方案中程序集的覆盖率。但是,当我们签入并且CI生成运行代码覆盖率报告时,项目引用的其他第三方程序集中的覆盖率(本地和CI生成上) 由于第三方程序集拥有的代码块比我们的解决方案多得多,因此在CI构建中测量的代码覆盖率%明显不一致。 程序集不是.net framework程序集,而

我如何让我的CI构建停止测量我们在解决方案中的项目中没有编写的代码(程序集)的覆盖率

我们在TFS构建定义中为解决方案的CI构建打开了代码覆盖率。当我们在VisualStudio中本地运行代码覆盖率时,我们正确地报告了解决方案中程序集的覆盖率。但是,当我们签入并且CI生成运行代码覆盖率报告时,项目引用的其他第三方程序集中的覆盖率(本地和CI生成上)

由于第三方程序集拥有的代码块比我们的解决方案多得多,因此在CI构建中测量的代码覆盖率%明显不一致。
程序集不是.net framework程序集,而是从NuGet软件包中拉入的其他程序集。

如果使用运行设置文件,则可以从代码覆盖范围中排除某些文件

文件的内部结构如下所示

<ModulePaths>
   <Include>
     <ModulePath>.*\.dll$</ModulePath>
    </Include>
    <Exclude>
       <ModulePath>.*CPPUnitTestFramework.*</ModulePath>
       <ModulePath>.*test.*</ModulePath>
       <ModulePath>.*tests.*</ModulePath>
    </Exclude>
 </ModulePaths>

.\.dll$
*CPPUnitTestFramework*
*测试*
*测试*
上述设置将从覆盖范围中排除所有测试dll,您只需将dll名称片段添加到排除节点,即可从代码覆盖范围中忽略dll

因此,Some3rdParty.dll将被排除在

<ModulePath>.*Some3rdParty.*</ModulePath>
*第三方*
有关runsettings文件的更多详细信息和实际完整内容,请访问


或者更好的解释是:我知道[ExcludeFromCodeOverage],并在单元测试类中使用它。这些不是我关心的集会。他们没有贡献,这是正确的。关注第三方程序集(我无法将该属性添加到该程序集)。我在VS Gallery中提供了runsettings文件的模板项,请参阅VS 2013,VS 2012。runsettings成功了。从包含.pdb的第三方nuget包的输出文件夹中删除.pdb也是如此。我仍然不明白为什么会包括一些没有.pdb的程序集。文档中仅说明了解决方案程序集和带有PDB的程序集。但是runsettings可以使构建代理与本地代理的行为相同。谢谢这是个谎言;:-)我以前在覆盖范围内包含过构建dll,我必须从源代码中删除构建dll,并在2012年从构建服务器中重新添加它们,以阻止它们被包含!