如何告诉Visual Studio Online的VS测试任务忽略特定的nUnit测试类别

8
我很难告诉Visual Studio Online忽略某些测试,这些测试在VSO构建期间不需要运行。我的测试库中有一组测试,我不希望它们在在线构建过程中运行。这些测试可能需要非常长的时间才能完成,因此我不希望它们成为构建阶段执行的测试的一部分,以便构建代理尽可能少地花费时间来完成构建。因此,我可以使用NUnit类别标记这些测试,如下所示:
/// <summary>
///     This is a long running test
/// </summary>
[Test]
[Category("LongRunningTest")]
public void ObtainsTourInformationTest() {
...
}

这是我的测试任务定义的部分截图。我在某处看到可以使用测试筛选条件来实现此目的,但我还没有弄清楚。 Visual Studio Test Task definition 我正在使用以下NUnit软件包。
<package id="NUnit.Runners" version="2.6.4" />  
<package id="NUnit" version="2.6.4"/>
<package id="NUnitTestAdapter" version="2.0.0" /> 

基本上,我需要知道如何告诉Visual Studio Online测试任务忽略标有NUnit类别属性的测试。
2个回答

10
"

TestCategory!=LongRunningTest

"的意思是“不包括标记为“LongRunningTest”的测试用例”。
另外,在Visual Studio中在线工作时,可以按Traits分组并选择您想要运行的测试用例。

“按照特征对测试进行分组”是什么意思? - Alfredo A.
测试资源管理器窗口菜单栏有一个图标,用于选择如何分组测试:按类、持续时间、结果、特性、项目。 - Charlie
我正在使用Visual Studio Online(与Visual Studio在线工作不起作用)。我发布的截图是Visual Studio Online构建定义中的测试任务部分。 - Alfredo A.
@AlfredoA。你需要在测试筛选条件中指定那个值(Charlie说)。这样可以正常工作吗? - starian chen-MSFT
要排除多个类别,请使用 (TestCategory!=LongRunningTest)&(TestCategory!=InternalResourceAccess) - Christoph
显示剩余2条评论

1
另一种方法是将所有长时间运行的测试放在单独的项目中,然后要么:

  • 排除特定项目(如下面示例中的Membership.Business.LibraryCS.IntegrationTests.dll)
  • 或者使用标准命名约定来命名仅包含长时间运行测试的项目,然后排除所有这些项目(如下面示例中具有“endtoend”名称的任何项目)

以下是我们在Azure DevOps中设置的屏幕截图:

enter image description here

我们发现这对于涉及本地数据库且无法在DevOps上工作的端到端测试特别有效。在这种情况下,将它们放在自己的项目中是理想的,因为端到端测试项目可以有一个连接字符串到测试数据库,而不在任何单元测试项目中使用该连接确保它们不会意外地访问数据库。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接