2017-04-25 3 views
0

私のサブステップファイルがすでにクラスを拡張している場合、MasterStep/BaseStepを作成する方法は?私のステップのいずれかのファイルのための私のサブステップファイルがすでにクラスを拡張している場合、MasterStep/BaseStepを作成するには?

例コード:キュウリのタグを追加しようとすると

public class LoginSteps extends DriverFactory { 

WebDriver driver = getDriver(); 

@Given("^User navigates to the \"([^\"]*)\" website$") 
public void user_navigates_to_the_website(String url) throws Throwable { 
    basePage.loadUrl(url); 
} 

@And("^User entered the \"([^\"]*)\" username$") 
public void user_entered_the_username(String username) throws Throwable { 
    loginPage.setUsername(username); 
} 

@And("^User entered the \"([^\"]*)\" password$") 
public void user_entered_the_password(String password) throws Throwable { 
    l 

は、私は以下の次のタグ/コードを使用する必要がありますが、私はすべてのステップのクラス/ファイル内で繰り返したいいけないとCucumber dosntは拡張クラス内にタグを追加できるので、DriverFactory内では許可されていません。あなたの助けのための

@After 
public void close_browser_window(Scenario scenario) throws Exception { 
    if (scenario.isFailed()) { 
     scenario.embed(((TakesScreenshot) driver).getScreenshotAs(OutputType.BYTES), "image/png"); 
    } 
} 

おかげ

+1

'LoginSteps'は' DriverFactory'を拡張する理由を考えてみてください。それは本当に 'DriverFactory'の一種ですか?継承の代わりに合成を使用することを検討してください。 – azurefrog

+0

@azurefrogありがとうございますが、他のクラスを初期化する場所が必要です。\t \t basePage = PageFactory.initElements(driver、BasePage.class); – Gbru

+0

すべてのクラスでAfter hookコードを繰り返す必要はありません。どのクラスでもそれを言い、キュウリがそれを拾うでしょう。各シナリオに対して、すべてのステップ定義とフッククラスの新しいインスタンスが作成されます。 – Grasshopper

答えて

1

はDriverFactoryを拡張BaseStepsを作成し、その後、あなたのLoginStepsはBaseStepsを拡張:

public class BaseSteps extends DriverFactory { 

    WebDriver driver = getDriver(); 

    @After 
    public void close_browser_window(Scenario scenario) throws Exception { 
     if (scenario.isFailed()) { 
     scenario.embed(((TakesScreenshot) 
     driver).getScreenshotAs(OutputType.BYTES), "image/png"); 
} 

} 
+0

あなたはステップ定義やフックを含むクラスを拡張することができません。 – Grasshopper

+0

@Rushby伝説のおかげで、トリックをやってしまいました! – Gbru

+0

すごくうれしい私は助けてくれるだろう:) @Gbru – Rushby

関連する問題