Visual Studio 2008单元测试:如何逐个执行?

时间:2009-06-19 15:11:37

标签: .net visual-studio visual-studio-2008 unit-testing

在进行单元测试时,有没有办法告诉[TestClass()]一个执行一个[TestMethod()]? (而不是Visual Studio启动多个线程)。这只需要我的一两个测试类。

3 个答案:

答案 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。

  • 将光标放在TestMethod
  • 调试:Ctrl-R,Ctrl-T或Test - >调试 - >当前背景下的测试
  • 运行:Ctrl-R,T或Test - >运行 - >当前背景下的测试