私はステップにwebdriver
を注入しようとしています。私はthis instructionsを使用しており、うまく動作します。キュウリの依存性注入はどのように機能しますか?
アイデアはWebDriverをステップクラスにサービスとして挿入することです。最初のステップで、次の依存関係を追加する必要があります。
<dependency>
<groupId>info.cukes</groupId>
<artifactId>cucumber-spring</artifactId>
<version>1.2.5</version>
<scope>test</scope>
</dependency>
依存性注入には3つの主なクラスがあります。ここではそれらを1つずつ紹介します。
BaseUtil
BaseUtilはWebDriverofセレンの属性を持つクラスです。クラスは非常に簡単です:
public class BaseUtil {
private WebDriver driver;
public WebDriver getDriver() {return driver;}
public void setDriver(WebDriver driver) { this.driver = driver;}
}
フック
フッククラスは@Before, @After
が含まれています。 testInitialier()メソッドは、webDriver ファイルをロードしてインスタンスを作成する一方、メソッドtestTearDown()はブラウザを終了させます。
public class Hook extends BaseUtil{
BaseUtil base;
@Before
public void testInitializer(){
File file = new
File(IgniteTaskApplication.class.getClassLoader().getResource("driver/chromedriver.exe").getFile());
String driverPath=file.getAbsolutePath();
System.out.println("Webdriver is in path: "+driverPath);
System.setProperty("webdriver.chrome.driver",driverPath);
base.setDriver(new ChromeDriver());
}
public Hook(BaseUtil base) {
this.base = base;
}
@After
public void tearDownTest(){
base.getDriver().close();
}
}
ステップ
そして、ステップクラスがコンパイル機能ファイルから来た手順が含まれています。 Eclipseでフィーチャー・ファイルをコンパイルするには、EclipseにCucumberプラグインをインストールする必要があります。
public class ClickButton_Steps extends BaseUtil{
BaseUtil base;
public ClickButton_Steps(BaseUtil base){
super();
this.base=base;
}
@When("^I clcik on the button$")
public void i_clcik_on_the_button() throws Throwable {
cb=new ClickButtonPage(base.getDriver());
cb.navigator();
}
// The other steps ...
}
私はどのように実行しますか?
オープン機能ファイル - >として実行 - >私はそれがにつながる方法で実行されているメソッドの順序が何であるかを疑問に思って
JUnitの
質問を実行します依存注射?
私は次のように順序があると思います:
- JUnitは、それが
Hook
クラスのインスタンスを作成する必要があるので、testInitializer()
はフッククラスであるtestInitializer()
- ある
@Before
メソッドを呼び出します。 - これは、Hookクラスのコンストラクタを呼び出します。
しかし、私は残りのステップを理解することはできません。多分それは全く真実ではない。私は、私は機能的なコードを持っているが、私はそれがどのように動作するのか説明できないのですか?