2011-03-15 99 views
1

我有兩個[TestMethods]。 MethodA的結果需要是MethodB的輸入。問題是,當新的測試方法啓動時,所有的值和變量都會被重置。VS 2010:將TestMethod的結果傳遞給另一個Testmethod

有人已經問過exact same question,但還沒有真正的解決方案。

我要的是下面的工作:

Guid CustomerID; 

[TestMethod] 
public void CreateCustomer() 
{ 
    // Create a new customer and store the customer id 
    CustomerID = CreateNewCustomer(); 
    Assert.IsNotNull(...); 
} 

[TestMethod] 
public void DeleteCustomer() 
{ 
    // Delete the customer created before 
    var ok = DeleteCustomer(CustomerID); 
    Assert.IsNotNull(...); 
} 

我明白,這不是測試「官方」的方式,但我確實需要爲這種情況的實際解決方案 - 所以我希望某種解決方法。

任何想法?

回答

1

爲什麼不在創建客戶的刪除客戶測試?

[TestMethod] 
public void CreateCustomer() 
{ 
    // Create a new customer and store the customer id 
    var customerID = CreateNewCustomer(); 
    Assert.IsNotNull(...); 
} 

[TestMethod] 
public void DeleteCustomer() 
{ 
    // Delete the customer created before   
    var customerID = CreateNewCustomer(); 
    var ok = DeleteCustomer(customerID); 
    Assert.IsNotNull(...); 
} 

或剛剛創建的的TestFixture成立客戶:

(該TestFixtureSetUp的名稱可能會在VS測試環境的不同,這就是它被稱爲在NUnit的,但會有一個當量)

private Guid CustomerID; 

[TestFixtureSetUp] 
{ 
    **EDIT** you could ensure you DB is clean here: 
    CleanDB(); 
    CustomerID = CreateNewCustomer(); 
} 


[TestMethod] 
public void CreateCustomer() 
{ 
    // check previously created customer   
    Assert.IsNotNull(...); 
} 

[TestMethod] 
public void DeleteCustomer() 
{ 
    // Delete the customer created before   
    var ok = DeleteCustomer(CustomerID); 
    Assert.IsNotNull(...); 
} 

[TestFixtureTearDown] 
{ 
    **EDIT** or you could ensure you DB is clean here: 
    CleanDB(); 
} 

第一種方案是在我的每一個測試用例的意見更好負責創建自己的數據,但如果這是它實際上是把東西進出數據庫的集成測試,然後它是確定(再次在我看來)有數據所有測試都需要在該類的設置中完成,然後所有測試都可以運行,以期數據在那裏。你應該確保每個測試類都有一個相應的測試拆除,這將從數據庫中刪除這個類的測試數據,或者你在每個測試類運行之前在某個地方清理數據庫(如在一個普通的基類中)

+0

嗨,山姆,謝謝你的幫助。 – Ingmar 2011-03-15 12:30:26

+0

Sh ...命中意外返回;-)好吧,這個想法是在測試運行中創建一個新客戶,然後再次在完全相同的測試運行中刪除同一個客戶。所以,最後,如果一切都完成了,那麼在每次測試之後數據庫都會再次變空。 – Ingmar 2011-03-15 12:34:53

+0

@Ingmar,看看我的編輯,你需要確保如果一切都沒有解決,數據庫被重置爲可行狀態,以便其他測試不受影響。這可以在TestFixtureSetup中或拆卸下來。我將編輯以包含此信息 – 2011-03-15 12:36:21

1

因爲每個[TestMethod]都是獨立運行的,所以您需要使用[TestInitialize]方法來創建新客戶,這與您的情況一樣。