2009-06-19 115 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團隊套件或(我相信)的測試版本之一,你可以創建一個有序的測試,並添加你的所有單元測試到有序測試。

相關問題