2009-06-19 73 views
4

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

+0

为什么你不想让它一次全部测试? – 2009-06-19 15:12:22

+1

因为我有很多TestMethod,他们验证全局变量状态,我不想让其他测试干涉。 – 2009-06-19 15:13:14

回答

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中同时运行不同的测试。

有可能导致测试过程中出现死锁的错误情况。但我认为这可能是一个小问题,因为它不是生产代码。

0

您可以调试或运行任何一个TestMethod。

  • 把你的光标在TestMethod的
  • 调试:Ctrl + R键,按Ctrl-T或测试 - >调试 - >测试在当代语境中
  • 运行:按Ctrl-R,T或测试 - >运行 - >测试在当代语境中
2

如果您使用的是Visual Studio 2008团队套件或(我相信)的测试版本之一,你可以创建一个有序的测试,并添加你的所有单元测试到有序测试。

相关问题