6

这可能与问题有关:Visual Studio 中单元测试的动态播放列表

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

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

有没有办法做到这一点?

4

1 回答 1

10

我不知道您可以在 TFS 中使用的设置类型,因为我没有使用 TFS,但我知道可以在NUnitMSTest中使用Categories

使用 NUnit 的解决方案

使用 NUnit,您可以使用 -Attribute 标记单个测试甚至整个固定装置Category

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()
        {
        }
    }
}

但是这里你必须用那个属性标记所有的测试,它不能用来装饰整个类。

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

使用VSTest.Console.exe

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

使用MSTest.exe

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

编辑

您还可以使用 VS 的 TestExplorer 执行某些测试类别。

在此处输入图像描述
(来源:s-msft.com

如上图所示,您可以在 TestExplorer 的左上角选择一个类别。选择特征并仅执行您想要的类别。

有关详细信息,请参阅MSDN

于 2015-11-10T06:46:42.810 回答