在进行单元测试时,有没有办法告诉[TestClass()]一个执行一个[TestMethod()]? (而不是Visual Studio启动多个线程)。这只需要我的一两个测试类。
答案 0 :(得分:2)
如果您使用的是Visual Studio 2008 Team Suite或(我相信)其中一个Tester版本,您可以创建一个Ordered Test并将所有单元测试添加到该Ordered Test中。
答案 1 :(得分:1)
不,使用默认工具在Visual Studio 2008中无法执行此操作。
可以通过向TestInit方法添加一些有趣的配置代码来实现。例如,您可以让所有测试类派生自以下基类。
[TestClass]
public class ExecuteOneAtTimeBase {
private static object s_mutex = new object();
[TestInit]
public void TestInit() {
Monitor.Enter(s_mutex);
}
[TestCleanup]
public void TestCleanup() {
Monitor.Exit(s_mutex);
}
}
所有TestMethod实例都被调用TestInit和TestCleanup方法括起来。使用Monitor.Enter / Exit组合可以保证给定的单元测试方法在执行期间保持锁定。因此,多个线程无法在单个AppDomain中同时运行不同的测试。
有些错误情况会导致测试过程出现死锁。但我认为这可能是一个小问题,因为它不是生产代码。
答案 2 :(得分:0)
您可以调试或运行任何一个TestMethod。