依赖注入 - Cucumber Pico Container

sni*_*ikt 2 java frameworks cucumber ui-automation picocontainer

在我的情况下,我很难理解和利用依赖注入。我想使用 Pico-container ( https://cucumber.io/blog/2015/07/08/polymorphic-step-definitions )。

这是我的情况......我目前有一个包含我所有 selenium 的 step 定义类,并且它变得太大了:

public class StepDefinitions{
    public static WebDriver driver; // a driver is returned here from a static Driver Factory Class
    LoginPage loginPage = new LoginPage(driver); //Page Object Model(s)

    @Before("setup")
    @After //screen snapshot
    @After("destroy")
    @Given //many methods with this tag
    @When  //many methods with this tag
    @Then  //many methods with this tag
}
Run Code Online (Sandbox Code Playgroud)

现在我想可能有一个包含我的驱动程序、POM 和 Hooks 的类:

public static WebDriver driver; //driver is returned from a static Driver Factory Class
LoginPage loginPage = new LoginPage(driver); //Page Object Model(s)

 @Before("setup")
 @After
 @After("destroy")
Run Code Online (Sandbox Code Playgroud)

另一个包含 my 的@Given类,一个包含 my 的类@When,以及一个包含 my 的类@Then

然后我需要正确连接所有东西,以便所有类都可以使用驱动程序、钩子和 POM。Cucumber 不支持继承,所以接口或依赖注入(Pico Container)是要走的路。我不知道该怎么做,而且我在网上学习过,我只是无法将我可怜的大脑全部包裹起来。

Tho*_*erg 5

您可能对我的博客文章感兴趣,其中我使用 Pico Container 在两个不同的 Cucumber-JVM 步骤类之间共享状态,http://www.thinkcode.se/blog/2017/04/01/sharing-state-between-steps -in-cucumberjvm-using-picocontainer

  • 如果将静态字段设置为某项,它将在 JVM 的整个生命周期内保留该值。这意味着每个测试在执行后都必须重置值。这是可以做到的。但如果您忘记重置静态变量,它可能会泄漏到下一个测试中。因此,您可以使用静态变量,但它们会要求您记住重置它们以避免泄漏。 (2认同)