Visual Studio 使用播放列表测试资源管理器
Visual Studio Test Explorer with playlists
这可能与问题有关:Dynamic playlists of unit tests in visual studio。
我希望能够拥有一个或多个测试播放列表,而不是将每个新测试都添加到某个播放列表中。
我目前有一个包含我所有单元测试的播放列表,但将来我想要一个包含自动集成测试的播放列表,在提交到 TFS 之前应该 运行 但不是每次应用程序时构建。
有办法吗?
我不知道您可以在 TFS 中使用的设置类型,因为我没有使用 TFS,但我知道可以在两者中使用 Categories,NUnit 和 MSTest.
使用 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。
这可能与问题有关:Dynamic playlists of unit tests in visual studio。
我希望能够拥有一个或多个测试播放列表,而不是将每个新测试都添加到某个播放列表中。
我目前有一个包含我所有单元测试的播放列表,但将来我想要一个包含自动集成测试的播放列表,在提交到 TFS 之前应该 运行 但不是每次应用程序时构建。
有办法吗?
我不知道您可以在 TFS 中使用的设置类型,因为我没有使用 TFS,但我知道可以在两者中使用 Categories,NUnit 和 MSTest.
使用 NUnit 的解决方案
使用 NUnit,您可以使用 Category
-Attribute:
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。