这里有 3 周的 Java 经验。我有这两个类 - AppTest 和 AppTest2 并且我在它们中都有相同的代码:
这是我的代码:
public class Apptest/AppTest2 {
public WebDriver driver;
public WebDriverWait wait;
@DataProvider(name = "dataProvider")
public Object[][] setUp() throws Exception {
File firefoxPath = new File(System.getProperty("lmportal.deploy.firefox.path", "C:\\Program Files (x86)\\Mozilla Firefox\\firefox.exe"));
FirefoxBinary ffox = new FirefoxBinary(firefoxPath);
ffox.setEnvironmentProperty("DISPLAY", ":20");
driver = new FirefoxDriver(ffox, null);
wait = new WebDriverWait(driver, timeoutInSeconds );
Object[][] data = new Object[1][2];
data[0][0] = driver;
data[0][1] = wait;
return data;
}
@Parameters({ "driver", "wait" })
@Test(dataProvider = "dataProvider")
public void twoUsersSignUp(WebDriver driver, WebDriverWait wait) throws InterruptedException{
//test here
}
}
如何取出这段代码(setUp()),使其成为一个类,然后将这些变量传递给下一个 void “twoUsersSignUp”
编辑:我不是在寻找自动解决方案,我只是想重构它,所以我在两个类中没有相同的代码
EDIT2:在我实现了接受的答案的解决方案之后,我现在遇到了将变量“驱动程序”传递给第一类中的下一个方法的问题:
@AfterClass
public void quit () {
driver.quit();
}
我怎么做?
EDIT3:这是@AfterClass 解决方案:
@SuppressWarnings("deprecation")
@Configuration
@AfterClass
public static void quit (@Optional WebDriver driver) {
driver.quit();
}
EDIT4:实际上 EDIT3 不起作用,它只是隐藏了 Eclipse 的错误。我仍然无法访问“驱动程序”:(
EDIT5:我决定不需要在 AfterClass TestNG 注释中包含它,所以我删除了所有不必要的东西,现在看起来像这样:
public static void quit (WebDriver driver) {
driver.quit();
}
并且变量已以这种方式声明:
public static WebDriver driver;
但它仍然不起作用
EDIT6:通过实际调用测试代码中的方法来解决这个问题。事先我不必调用它,因为 testng.xml 调用了它,但是在我删除 @AfterTest 注释后,它已被排除在外!