多年来,我一直试图弄清楚如何使用dependsOnMethods 运行testng 套件文件,但根本无法破解它。如果我只运行测试类本身,一切都运行良好,但由于某种原因使用 xml 套件文件,它完全失败。
我有两个基本的测试方法,它们只检查驱动程序是否为空,如果是,则吐出一个字符串。我有一个 BaseClass,它创建线程安全驱动程序并关闭它。
如果我自己运行任何测试类,它就会完美运行,设置和拆除等。
如果我运行这个 xml 文件,驱动程序在第一次测试后为空,拆卸失败并出现空指针异常。如果我在没有 parallel = "classes" 参数的情况下运行,它会按预期运行。
<suite name="softwaretestingmaterial" parallel="classes" thread-count="4">
<test name="testngTest">
<classes>
<class group-by-instances="true" name="Misc.test0"></class>
</classes>
</test>
测试类
public class test01 extends BaseClass {
@Test
public void test1(){
if(driver.get() == null){
System.out.println("null1");
}
}
@Test(dependsOnMethods = {"test1"})
public void test2(){
if(driver.get() == null){
System.out.println("null2");
}
}
}
基类
public class BaseClass {
public static ThreadLocal<WebDriver> driver = new ThreadLocal<WebDriver>();
@BeforeClass
public synchronized static void setUp(){
WebDriverManager.chromedriver().setup();
ChromeOptions options = new ChromeOptions();
options.addArguments("enable-automation");
options.addArguments("--no-sandbox");
options.addArguments("--disable-extensions");
options.addArguments("--dns-prefetch-disable");
options.addArguments("start-maximized");
options.addArguments("--headless");
options.addArguments("window-size=1920,1080");
options.setPageLoadStrategy(PageLoadStrategy.NORMAL);
driver.set(new ChromeDriver(options));
driver.get().manage().timeouts().implicitlyWait(2, TimeUnit.SECONDS);
driver.get().manage().timeouts().setScriptTimeout(25, TimeUnit.SECONDS);
}
@AfterClass
public synchronized static void tearDown(){
driver.get().quit();
}
public static WebDriver getDriver() {
return driver.get();
}
}