2012-01-19 28 views
11

是否存在與MSTest的[ClassCleanup] & [ClassInitialize]的非靜態等價物?MSTest的[ClassCleanup]和[ClassInitialize]是否存在非靜態等價物?

我正在使用MSTest進行一些系統/集成級別測試,我不想擔心在測試中初始化連接。

示例代碼:

[TestClass] 
public class DefectCreatorTest 
{ 
    private long _cookie; 
    private soapcgi _soap; 

    [ClassInitialize] 
    public void Initialize() 
    { 
     _soap = new soapcgi {Url = "http://localhost:80/scripts/soapcgi.exe"}; 
     _cookie = Transaction.Login(_soap); 
    } 

    [ClassCleanup] 
    public void TearDown() 
    { 
     Transaction.Logout(_cookie, _soap); 
    } 

    [TestMethod] 
    public void CreateDefectTest() 
    { 
     var result = _soap.Foo(); 
     Assert.AreEqual("bar", result); 
    } 
} 
+0

你是什麼意思的非靜態?你的示例代碼有什麼問題? – seldary

+0

示例代碼編譯,但不會運行。用ClassInitialize裝飾的方法需要是一個靜態方法。 –

+0

測試不會運行,因爲Initialize方法需要將TestContext傳遞到設置方法中,即使它未被使用。 –

回答

6

回答你的問題,據我知道 - 不,不是MSTest的非靜態等效

但是:

  1. 看你的代碼,沒有任何理由_cookie_soap不應該做靜態的,InitializeTearDown一起。這樣做會讓你測試寫入過程中忘記煩惱配置...
  2. 如果你願意「跳槽」,NUnit的等價物[ClassCleanup] & [ClassInitialize]可應用於靜態&實例方法。
相關問題