2011-08-02 142 views
5

我想在我的單元測試中執行TestCleanup,但我需要將參數傳遞給清理方法。但由於默認的TestCleanup被自動調用,我無法傳遞任何參數給它。在TestCleanup中傳遞參數

有人可以請建議一種方法來做到這一點?

+1

如果您張貼一些代碼,您正在使用的,這將有助於回答你的問題。 –

回答

3

你可以使用一個測試類的實例變量的設置,測試之間進行通信,和清除測試方法:

namespace YourNamespace 
{ 
    [TestClass] 
    public class UnitTest1 
    { 
     private string someValue; 

     [TestMethod] 
     public void TestMethod1() 
     { 
      someValue = "someValue"; 
     } 

     [TestCleanup] 
     public void CleanUp() 
     { 
      // someValue is accessible here. 
     } 
    } 
} 

由於該CleanUp()方法將每一個單元測試之後運行,someValue將被綁定到正確的單元測試的上下文。

希望這會有所幫助。

0

你可以與價值,你認爲你需要通過它應有的參數測試類設置字段,但說實話這是令人驚訝的是,你需要一些參數來清理,並至少對我來說這將是一種測試中出現問題的氣味。

你的單元測試不需要清理,每個測試都應該負責自己的設置,並且應該單獨運行。

如果您的集成測試有一些需要清理的外部依賴關係,那麼您可以按照我的建議使用一個字段(您可能會在每次測試開始時設置一個字段(以便清理功能可以知道如果測試失敗要清理什麼)在測試之後是清理的正確值),或者我會做一個明確的清理函數(它接受了所需的參數),並在最後明確地由每個測試調用,並且然後讓的TestFixture清理確保清理可能已被使用的情況下,測試它們中的任何失敗,沒有把他們的清理方法的任何 ALL數據。

+1

存在測試設置和清理方法的原因是,您可以封裝所有測試的常用設置和清理邏輯。這不是封裝單元測試特定的邏輯。 – Zorayr