[英]Specflow using interfaces between step definitions and page objects
我一直在玩Specflow,並且通常使用頁面對象模型設計。 我已經開始將接口用作步驟定義中的步驟,然后在頁面對象模型中實現這些接口。
到目前為止,這似乎工作得很好,我可以換出硒頁面模型並針對API運行方案,而無需更改步驟定義。
例如
[Binding]
public class SearchByClaimSteps
{
ISearch Search = new Page_Object_Models.SearchPage();
IClaimDetails ClaimDetails = new Page_Object_Models.ClaimsDetails();
[When(@"I search by claim number using '(.*)'")]
public void WhenISearchByClaimNumberUsing(string claimNumber)
{
Search.ByClaim();
Search.ClaimSection.EnterClaimNumber(claimNumber);
Search.ClaimSection.StartSearch();
}
[Then(@"the claim will be found")]
public void ThenTheClaimWillBeFound()
{
Assert.Equals("Condition Declined",
ClaimDeatils.GetConditionStatus());
}
}
我在任何地方都沒有看到這樣的示例,並且有點擔心我完全錯過了界面的要點,這將使我的生活變得非常困難,並且需要做很多重寫工作。
所以我的問題是,這是使用接口的正確方法嗎?這種方法是否有可能在以后引起我的麻煩?
謝謝
您是否檢查過Gaspar Nagy的這篇帖子-它涵蓋了上下文注入和DI的所有基礎-http: //gasparnagy.com/2017/02/specflow-tips-baseclass-or-context-injection/ ?
我想說,相對於接口而不是具體的類進行測試是一種相對好的做法。 如果您認為按照測試的方式應該只不過是測試與您的類的可公開訪問的交互,那么對接口進行測試是完全有意義的。 它還將允許您通過一個測試一次測試多個實現。
另一方面,只要您知道該類是此類中的唯一類,測試一個具體的類就不會有任何危害,也沒有理由相信該類在不同的場景中可能具有不同的實現,那么為什么要費心有界面嗎? 您可以僅針對類本身的公共API進行測試,而不會造成任何傷害!
最后只有一個陷阱,這很可笑。 如果您的類是另一個類的依賴項,那么為了測試另一個類,您必須使其成為一個接口,以便可用的模擬框架能夠使用它。 有“ Shimming”或“ Faking”框架,但是它們相當簡單。
總體而言,我將使用僅界面測試,這樣可以避免您希望一開始就做的麻煩。 只要整理得井井有條,額外的接口文件就值得。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.