Visual Studio 使用播放列表测试资源管理器

Visual Studio Test Explorer with playlists

这可能与问题有关:Dynamic playlists of unit tests in visual studio

我希望能够拥有一个或多个测试播放列表,而不是将每个新测试都添加到某个播放列表中。

我目前有一个包含我所有单元测试的播放列表,但将来我想要一个包含自动集成测试的播放列表,在提交到 TFS 之前应该 运行 但不是每次应用程序时构建。

有办法吗?

我不知道您可以在 TFS 中使用的设置类型,因为我没有使用 TFS,但我知道可以在两者中使用 CategoriesNUnitMSTest.

使用 NUnit 的解决方案

使用 NUnit,您可以使用 Category-Attribute:

标记单个测试甚至整个 fixture
namespace NUnit.Tests
{
  using System;
  using NUnit.Framework;

  [TestFixture]
  [Category("IntegrationTest")]
  public class IntegrationTests
  {
    // ...
  }
}

namespace NUnit.Tests
{
  using System;
  using NUnit.Framework;

  [TestFixture]
  public class IntegrationTests
  {
    [Test]
    [Category("IntegrationTest")]
    public void AnotherIntegrationTest()
    { 
      // ...
    }
  }
}

和唯一的 运行 那些使用 nunit-console.exe:

nunit-console.exe myTests.dll /include:IntegrationTest

MSTest 解决方案

MSTest 的解决方案非常相似:

namespace MSTest.Tests
{
    [TestClass]
    public class IntegrationTests
    {
        [TestMethod]
        [TestCategory("IntegrationTests")
        public void AnotherIntegrationTest()
        {
        }
    }
}

但是这里必须用那个属性标记所有的Test,不能用来装饰整个class。

然后,与 NUnit 一样,仅执行 IntegrationTests 类别中的那些测试:

使用VSTest.Console.exe

Vstest.console.exe myTests.dll /TestCaseFilter:TestCategory=IntegrationTests

使用MSTest.exe

mstest /testcontainer:myTests.dll /category:"IntegrationTests"

编辑

你也可以使用VS的TestExplorer执行某些Test-Categories


(来源:s-msft.com

如上图所示,您可以select在TestExplorer的左上角添加一个类别。 Select Trait 并只执行你想要的类别。

有关详细信息,请参阅 MSDN