gpt4 book ai didi

java - 跨不同类访问@BeforeTest 和@AfterClass (TestNG) 中的变量?

转载 作者:塔克拉玛干 更新时间:2023-11-02 08:04:16 26 4
gpt4 key购买 nike

我正在使用 Java 和 TestNG 框架为我的公司编写一些 selenium 自动化 UI 测试。我在 Base 类中定义驱动程序,我想在 @BeforeTest 中实际初始化驱动程序并在 @AfterTest 中退出它方法。假设它们在不同的类中,Java 的方法是什么?我知道如何让它在同一个类(class)中工作,但不能在不同的类(class)中工作。这是我的 Base.java 文件:

public class Base {

public static WebDriver driver = null;
public WebDriver getDriver() {
driver = new ChromeDriver();
return driver;
}
}

现在,我想要一个单独的 Setup 类和一个单独的 Teardown 类。如果我要在同一个 @Test 中定义所有这些,我会这样做:

@Test
public void testOne() {

Base b = new Base();
WebDriver driver = b.getDriver();

// Do test-y things here.

driver.quit();
}

我该如何设置?尝试学习正确的方法来做到这一点,而不是一起破解一些东西。如果需要,我还可以提供更多信息。谢谢!

最佳答案

使用继承。

public class TestBase {

protected WebDriver driver;

@BeforeClass
public void setUp(){
System.out.println("I am in setUp method.");

//WebDriver instantiation etc.
System.setProperty("webdriver.chrome.driver", "/path/to/chromedriver");
ChromeOptions options = new ChromeOptions();
options.addArguments("--start-maximized", "--disable-cache");
driver = new ChromeDriver(options);
driver.manage().timeouts().implicitlyWait(10, TimeUnit.SECONDS);
}

@AfterClass
public void tearDown(){
System.out.println("I am in tearDown method.");

//You can clean up after tests.
driver.close();
}
}

然后就可以使用继承了。注意 extends 关键字:

public class ParticularTest extends TestBase {

@Test
public void testMethod() {
System.out.println("I am in testMethod.");

//Your driver from TestBase is accessible here.
//Your assertions come here.
}
}

稍后您只需执行 ParticularTest.java。输出:

I am in setUp method.
I am in testMethod.
I am in tearDown method.

关于java - 跨不同类访问@BeforeTest 和@AfterClass (TestNG) 中的变量?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41988473/

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