gpt4 book ai didi

java - 依赖注入(inject)如何在 Cucumber 中工作?

转载 作者:搜寻专家 更新时间:2023-10-30 21:34:42 25 4
gpt4 key购买 nike

我一直在尝试将 webdriver 注入(inject)到步骤中。我用过this instructions并且效果很好。

想法是将 WebDriver 作为服务注入(inject)到步骤类中。在初始步骤中,您需要添加以下依赖项。

<dependency>
<groupId>info.cukes</groupId>
<artifactId>cucumber-spring</artifactId>
<version>1.2.5</version>
<scope>test</scope>
</dependency>

依赖注入(inject)涉及三个主要类。下面我们一一介绍。

enter image description here

基础工具

BaseUtil 是具有 WebDriverof Selenium 属性的类。该类非常简单:

public class BaseUtil {

private WebDriver driver;

public WebDriver getDriver() {return driver;}

public void setDriver(WebDriver driver) { this.driver = driver;}
}

Hook

Hook 类包含@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 中安装 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 ...
}

我如何运行它?

打开特性文件 -> Run as -> Run with Junit

问题

我想知道导致依赖注入(inject)的方法运行顺序是什么?

我猜顺序如下:

  1. Junit 调用 @Before 方法,即 testInitializer()
  2. testInitializer()在 Hook 类中,因此它需要创建一个 Hook 类的实例。
  3. 它导致调用 Hook 类的构造函数。

但是,我无法理解其余的步骤。也许它根本不是真的。我的意思是,我有一个功能代码,但我无法解释它是如何工作的?

最佳答案

据我了解,您正确地使用了 JUnit 作为带有 cucumber-spring 的测试框架。 JUnit 提供以下生命周期。

当您使用注解@Before 对方法进行注解时,它将在您进行的每个测试之前调用此方法。至于@After 可以用来清理资源,每次测试后调用。

运行测试时的测试流程:

  • 测试初始化​​器
  • i_clcik_on_the_button
  • 拆解测试

此外,您可以使用日志记录 (slf4j) 代替 System.out.println,这将更容易跟踪测试流程。

关于java - 依赖注入(inject)如何在 Cucumber 中工作?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45162938/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com