TestNG,使用dependsOnMethods 首次测试后驱动程序空指针异常

时间:2021-04-27 13:32:38

标签: java selenium selenium-webdriver testng

多年来,我一直试图弄清楚如何使用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();
}

}

0 个答案:

没有答案