NUnit3.testadapter已包含在代码覆盖范围内

时间:2018-10-03 15:54:29

标签: c# azure-devops nunit azure-pipelines

我今天在Azure DevOps中遇到了一个问题。我正在尝试建立一个启用代码覆盖率的测试执行管道,并且除与NUnit有关的一件特殊事情外,其他所有东西都可以正常工作。 当我在本地Visual Studio实例上运行Code Coverage时,一切都很完美,结果仅包含2个目标dll文件(产品+测试)。 但是,当在构建管道中运行时,我的覆盖率也得到nunit.framework.dll和nunit3.testadapter.dll,这将导致最终覆盖率错误。

azuredevopscodecoverage

有人遇到过同样的问题吗?

赞赏任何有效点。

1 个答案:

答案 0 :(得分:2)

您观察到的是正确的,并且是Azure Devops中VSTest任务中的错误。当VSTest在Visual Studio中运行时,它按解决方案文件中定义的内容运行,但是当它在Azure Devops(云或服务器)中运行时,则按该位置中存在的程序集运行。如果这些程序集具有pdb文件,则默认情况下将包含它们。
当前的解决方法是添加一个runsettings文件,并将两个nunit dll添加到那里的ModuleExclude部分。

<ModulePaths>
  <Exclude>
   <ModulePath>NUnit.Framework.dll</ModulePath>
   <ModulePath>NUnit3.TestAdapter.dll</ModulePath>
  </Exclude>
</ModulePaths>

有关执行此操作的信息,请参见以下两个文档:
Configure unit tests by using a .runsettings file

Customize code coverage analysis

您还可以添加并使用item template for runsettings来获取正确的块。

VSTest任务具有一个单独的字段,用于声明要使用的运行设置文件。

相关问题