作者热门文章
- iOS/Objective-C 元类和类别
- objective-c - -1001 错误,当 NSURLSession 通过 httpproxy 和/etc/hosts
- java - 使用网络类获取 url 地址
- ios - 推送通知中不播放声音
我正在使用 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/
所以我有这个 UltraTicTacToe 游戏,我正在用 HTML/CSS/JS 编码。它由表中表中的表组成。当您单击 X 或 O 时,我想要突出显示您应该进入的下一个 TicTacToe 牌 ta
Some text Some more text 如何让每个 .example 的 .whatever 包含其 .test 的内容? 例如,如果代码是这样的: Som
我是一名优秀的程序员,十分优秀!