Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/java/373.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/selenium/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java TestNG类在包中失败并自行成功_Java_Selenium_Selenium Webdriver_Testng_Testng Dataprovider - Fatal编程技术网

Java TestNG类在包中失败并自行成功

Java TestNG类在包中失败并自行成功,java,selenium,selenium-webdriver,testng,testng-dataprovider,Java,Selenium,Selenium Webdriver,Testng,Testng Dataprovider,我的包裹里有三个测试班。 第一个配置: public class PageVisibilityConfig { WebDriver driver; @BeforeSuite public void beforeSuite() { DOMConfigurator.configure("log4j.xml"); Log.startTestCase("Page Visibility Suite"); Log.info(Thread.currentThread().getSta

我的包裹里有三个测试班。 第一个配置:

public class PageVisibilityConfig {
WebDriver driver;

@BeforeSuite
public void beforeSuite() {
    DOMConfigurator.configure("log4j.xml");
    Log.startTestCase("Page Visibility Suite");
    Log.info(Thread.currentThread().getStackTrace()[1].getMethodName());
    driver = BrowserFactory.getBrowser("Firefox");

}

@AfterSuite(enabled = true)
public void afterSuite() {
    Log.info(Thread.currentThread().getStackTrace()[1].getMethodName());
    BrowserFactory.closeAllDriver();
    Log.endTestCase("Page Visibility Suite");
}

@AfterGroups(groups = { "admin", "user" })
public void afterGroupLogOut() {
    Log.info(Thread.currentThread().getStackTrace()[1].getMethodName());
    UserMenu usermenu = PageFactory.initElements(driver, UserMenu.class);
    usermenu.activeteUserMenu();
    usermenu.logout();
}
}
第一个真正的测试类:

public class PageVisibilityAdmin {
WebDriver driver;

@BeforeClass(groups = { "admin" }, enabled = true)
public void beforeClassLogin() {
    driver = BrowserFactory.getBrowser("Firefox");

    Log.startTestCase("Page Visibility Admin test cases");
    Log.info(Thread.currentThread().getStackTrace()[1].getMethodName());

    LogIn login = PageFactory.initElements(driver, LogIn.class);
    login.signupLogin();
    login.loginViaCredentials();

    UserMenu usermenu = PageFactory.initElements(driver, UserMenu.class);
    usermenu.activeteUserMenu();

    Assert.assertTrue(usermenu.isAdmin());
}

@DataProvider(name = "visibility_admin")
public static String[][] providedData() {
    return com.resources.SQLConForDataProvider
            .executeQuery("SELECT url FROM cdb_1cc755a513.visibility where admin='1' limit 1");
}

@Test(dataProvider = "visibility_admin", groups = { "admin" }, enabled = true)
public void adminRun(String url) {
    Log.info(Thread.currentThread().getStackTrace()[1].getMethodName());
    Log.info("Try " + Util.SUT + url);

    driver.get(Util.SUT + url);

    Log.info("Actual page " + driver.getCurrentUrl());

    Assert.assertEquals(driver.getCurrentUrl(), Util.SUT + url);
    Assert.assertFalse(driver.getTitle().toLowerCase().contains("not found"));
    Assert.assertFalse(driver.getTitle().toLowerCase().contains("login"));
    Assert.assertFalse(driver.getTitle().toLowerCase().contains("error"));
}

}
第三个问题是:

public class PageVisibilityUser {
WebDriver driver;

@BeforeClass(groups = { "user" }, enabled = true)
public void beforeGroupsLogin() {
    driver = BrowserFactory.getBrowser("Firefox");

    Log.startTestCase("Page Visibility User test cases");
    Log.info(Thread.currentThread().getStackTrace()[1].getMethodName());

    LogIn login = PageFactory.initElements(driver, LogIn.class);
    login.signupLogin();
    login.loginViaFacebook();

    UserMenu usermenu = PageFactory.initElements(driver, UserMenu.class);
    usermenu.activeteUserMenu();

    Assert.assertFalse(usermenu.isAdmin());
}

@DataProvider(name = "visibility_user")
public static String[][] providedData() {
    return com.resources.SQLConForDataProvider
            .executeQuery("SELECT url FROM cdb_1cc755a513.visibility where not_added_user='1' limit 1");
}

@Test(dataProvider = "visibility_user", groups = { "user" }, enabled = true)
public void userRun(String url) {
    Log.info(Thread.currentThread().getStackTrace()[1].getMethodName());
    Log.info("Try " + Util.SUT + url);

    driver.get(Util.SUT + url);

    Log.info("Actual page " + driver.getCurrentUrl());

    Assert.assertEquals(driver.getCurrentUrl(), Util.SUT + url);
    Assert.assertFalse(driver.getTitle().toLowerCase().contains("not found"));
    Assert.assertFalse(driver.getTitle().toLowerCase().contains("login"));
    Assert.assertFalse(driver.getTitle().toLowerCase().contains("error"));

}
}
基本上,我是在检查url是否可用于不同的角色。 我的问题是: 如果我将这些类作为套件或包运行,那么最后一个类将失败,sql结果集中会出现一个“额外的行”(空)。 如果我只运行config类和它运行的最后一个类,并且没有错误。 还有一个例外(这很奇怪):

运行TestSuite java.sql.SQLException:在 com.mysql.jdbc.SQLError.createSQLException(SQLError.java:998)位于 com.mysql.jdbc.SQLError.createSQLException(SQLError.java:937)位于 com.mysql.jdbc.SQLError.createSQLException(SQLError.java:926)位于 com.mysql.jdbc.SQLError.createSQLException(SQLError.java:872)位于 com.mysql.jdbc.ResultSetImpl.checkRowPos(ResultSetImpl.java:787)位于 com.mysql.jdbc.ResultSetImpl.getStringInternal(ResultSetImpl.java:5244) 位于com.mysql.jdbc.ResultSetImpl.getString(ResultSetImpl.java:5167) 在 com.resources.SQLConForDataProvider.executeQuery(SQLConForDataProvider.java:47) 在 提供的数据(PageVisibilityUser.java:39) 位于的sun.reflect.NativeMethodAccessorImpl.invoke0(本机方法) invoke(NativeMethodAccessorImpl.java:57)


基本上,第二个测试类中的dataprovider在resultset中返回一个额外的null。基本上,第二个测试类中的dataprovider在resultset中返回一个额外的null。