簡體   English   中英

使用步驟定義和頁面對象之間的接口進行Specflow

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM