![](/img/trans.png)
[英]How do I associate test methods to azure test plan test cases without using visual studio?
[英]How do I test parent methods?
假設我有一個看起來像這樣的接口:
interface IMyAPIService
{
List<Order> GetOrders();
}
和一個實現它的類:
class MyAPIService : IMyAPIService
{
public List<Order> GetOrders() {}
public bool Login() {}
}
登錄調用外部服務。 我可以模擬外部服務,從而測試登錄沒有問題。
但是,GetOrders必須先調用Login,然后才能執行所需的操作。
我希望能夠測試如果Login錯誤,GetOrders也會返回錯誤,但是我不能模擬Login,因為它是同一類的成員。 我可以模擬Login調用的外部服務,並確保它返回錯誤,然后我知道Login將返回錯誤,但是我不確定這是否是正確的方法。
我應該僅在IMyAPIService中測試接口方法,而不是在MyAPIService中測試所有公共方法嗎? 那我該如何測試登錄?
為該類的公共接口編寫測試。 如果您的程序中沒有代碼可以調用MyAPIService
上的Login
方法,則沒有理由將其放在類的公共接口上。
根據您的描述,應該可以通過調用GetOrders
方法並模擬外部服務來測試Login
方法的所有相關功能。
因此,您可能會進行如下測試:
您的測試應該只是班上的另一個客戶。 因此,他們只關心類的公共接口。 從這個角度來看,將登錄功能放在MyAPIService
的單獨私有方法中還是將所有登錄代碼直接放入GetOrders
方法中都沒有關系。 任何調用公共GetOrders
方法的測試都應以相同的方式工作。
重點是測試您的類,因為它們將在其余生產代碼中使用。 如果您開始公開所有方法,以便可以單獨測試所有方法,那么您傾向於最終將測試與代碼緊密耦合(使任何級別的重構都比需要的痛苦得多),或者重復測試(除非外部登錄成功,否則GetOrders
不能返回任何Orders
,因此,測試您的Login
方法調用外部登錄是多余的),否則您將進入模擬正在測試的類的黑暗世界(可以使用某些方法來完成)模擬框架)。 在類上擁有比所需數量更多的公共方法,也會使其他人在使用您的類時感到困惑(嗯……看來我需要調用Login
,然后才能調用GetOrders
)。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.