这可能与问题有关:Visual Studio 中单元测试的动态播放列表。
我希望能够拥有一个或多个测试播放列表,而不是将每个新测试都添加到某个播放列表中。
我目前有一个包含所有单元测试的播放列表,但将来我希望有一个包含自动化集成测试的播放列表,它应该在提交到 TFS 之前运行,而不是每次构建应用程序时运行。
有没有办法做到这一点?
这可能与问题有关:Visual Studio 中单元测试的动态播放列表。
我希望能够拥有一个或多个测试播放列表,而不是将每个新测试都添加到某个播放列表中。
我目前有一个包含所有单元测试的播放列表,但将来我希望有一个包含自动化集成测试的播放列表,它应该在提交到 TFS 之前运行,而不是每次构建应用程序时运行。
有没有办法做到这一点?
我不知道您可以在 TFS 中使用的设置类型,因为我没有使用 TFS,但我知道可以在NUnit和MSTest中使用Categories。
使用 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 的解决方案非常相似:
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。