有兩種測試場景我不清楚。它們都是第一眼看到的,以創建非常脆弱的測試。單元測試接口和方法調用
首先,當應一個單元測試接口(即驗證的接口具有一組簽名)?
其次,當應在「測試序列圖」(我只是做了一個學期) - 這意味着驗證的電話是在合適的對象進行的?
有兩種測試場景我不清楚。它們都是第一眼看到的,以創建非常脆弱的測試。單元測試接口和方法調用
首先,當應一個單元測試接口(即驗證的接口具有一組簽名)?
其次,當應在「測試序列圖」(我只是做了一個學期) - 這意味着驗證的電話是在合適的對象進行的?
測試接口意味着你應該只測試對象有哪些公共接口上的成員。換句話說,不要測試私人東西。以被測單位作爲黑盒子。這使得測試更易於維護,因爲您可以在不中斷測試的情況下更改實施細節。測試也會表達你的被測試單元是有益的,而不是它是如何實現的。
對其他對象所做的測試調用稱爲「交互測試」(不要與集成測試混淆,其中不要混淆其他對象)。當被測單元調用另一個對象而不依賴於它的方法時,需要進行交互測試。我試着用一個例子來解釋它。
以下方法需要進行測試:
public decimal CalculateTax(Order order);
讓我們假設,這種方法需要調用
TaxRules TaxRuleProvider.GetRules(Country country)
返回一些地方的規則。當它沒有調用它時,它將不能返回正確的結果。它將錯過重要的信息。你不需要測試它是否被調用,只需測試結果。
另一種方法:
public void StoreThingy(Thingy toBeStored);
它將調用
public void NotificationBroker.NotifyChanges(SomeChanges x);
StoreThingy不依賴於該通知。如果它發送通知,你不能決定它的接口。你需要通過交互測試來測試。
通常用於交互測試的方法返回void
。在這個類別中有各種各樣的事件和通知和方法,如Commit()
。
哪種語言? – skaffman 2010-06-28 21:13:44
請確定你所說的意思是「當」(或答案是「總是) – Almad 2010-06-28 21:14:51
語言是C#,@Almad - 如果答案是永遠,請證明這樣的測試帶來給出,他們將與接口或對象打破值模型的變化是否是可取的 – Ben 2010-06-28 21:28:13