2013-03-27 65 views
0

在下面的代碼片段中,我使用ClassInitialize和Cleanup來圍繞我正在運行的一系列測試進行事務處理。該代碼在我的GUI測試運行器中工作,但在mstest命令行中出現以下錯誤。我能夠強制類清理並初始化在同一個線程中?不希望使用測試初始化​​和清理,因爲它會顯着降低測試速度。我可以強制ClassCleanup在與ClassInitialize相同的線程中執行嗎?

CODE

 private static TransactionScope _trans; 

    [ClassInitialize] 
    public static void ClassInitialize(TestContext context) 
    { 
     _trans = new TransactionScope(); 
     //...do work 
    } 

    [ClassCleanup] 
    public static void ClassCleanup() 
    { 
     _trans.Dispose(); 
    } 

錯誤

運行有以下問題(補):類清理方法 GeoMetExplainSheetTests.TestCleanup失敗。錯誤消息: System.InvalidOperationException:一個TransactionScope必須創建它在同一線程上設置 ..

堆棧跟蹤:

在System.Transactions.TransactionScope.Dispose()

+0

發現這篇文章強調了在單獨的線程上調用這些方法。嗯..無賴...希望你們中的一個人對我有答案!? http://blogs.msdn.com/b/nnaderi/archive/2007/02/17/explaining-execution-order.aspx – TimmyD 2013-03-27 15:01:17

回答

0

我建議你通過刪除static modifier

更換
+0

感謝您的建議,但不可能,因爲不幸的是,ClassInitialize和ClassCleanup屬性需要通過方法定義是靜態的。 – TimmyD 2013-03-27 14:46:10

相關問題