gpt4 book ai didi

java - 无法在 Cucumber &Testng 中运行并行测试

转载 作者:行者123 更新时间:2023-12-02 11:30:43 25 4
gpt4 key购买 nike

我正在尝试使用 Testng 和 cucumber 在 2 个浏览器中运行并行测试。

出现以下异常,

cucumber.runtime.CucumberException: When a hook declares an argument it must be of type cucumber.api.Scenario. public void com.sample.data_republic.sample_ebay.EbayTest.loadBrowser(java.lang.String) at cucumber.runtime.java.JavaHookDefinition.execute(JavaHookDefinition.java:52) at cucumber.runtime.Runtime.runHookIfTagsMatch(Runtime.java:224)

下面给出的代码示例。

import cucumber.api.java.After;
import cucumber.api.java.Before;

import org.openqa.selenium.chrome.ChromeDriver;
import org.openqa.selenium.firefox.FirefoxDriver;

import org.testng.annotations.Parameters;

public class EbayTest extends EbayPageObjects {

public WebDriver driver;
Properties propertyObj;

@Before
@Parameters("browser")
public void loadBrowser(String browser) {
// If the browser is Firefox, then do this
if (browser.equalsIgnoreCase("firefox")) {
System.setProperty("webdriver.gecko.driver", "src/test/resources/drivers/geckodriver");
driver = new FirefoxDriver();
} else if (browser.equalsIgnoreCase("chrome")) {
System.setProperty("webdriver.chrome.driver", "src/test/resources/drivers/chromedriver");
driver = new ChromeDriver();
}

propertyObj = readPropertyFile();
driver.get(propertyObj.getProperty("url"));
}

最佳答案

Before hook 是一个 Cucumber 方法,而不是 testNg 方法,它仅与 Scenario 对象一起注入(inject)。所以不能在其上使用@Parameters注解来传递参数值。您需要像下面一样使用 before hook。

@Before
public void beforeScenario(Scenario scenario) {

或者没有场景对象

 @Before
public void beforeScenario() {

您可以将浏览器值存储在属性文件中并在 before Hook 中访问它。或者在runner类的testNg的BeforeClass或BeforeMethod中实例化驱动,可以使用参数注解。

@BeforeClass
@Parameters("browser")
public void loadBrowser(String browser) {

关于java - 无法在 Cucumber &Testng 中运行并行测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49319804/

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