1

我对 TestNG 有一个非常不愉快的问题。当我尝试使用分配给它们的组启动一些测试时,会发生 NullPointerException。

测试示例:

public class DemonstrationTest01 extends FundamentalTest {

    private static final String LOGIN = "Fruzenshtein";
    private static final String PASSWORD = "111111";

    @Test(priority=1, groups="foo")
    public void test01() throws InterruptedException {
        basePage.logIn(LOGIN, PASSWORD)
            .checkTextPresent("Welcome, "+LOGIN+"!")
            .clickSiteLogo()
            .checkTextPresent("Welcome, "+LOGIN+"!")
            .logOut();

    }

}

第二次测试:

public class DemonstrationTest03 extends FundamentalTest {

    @Test(priority=1, groups="foo")
    public void test03() throws InterruptedException {
        ProductPage productPage = basePage.navToCategory("Homewear")
            .checkCategoryTitle("Mugs")
            .navToProductPage(2)
            .checkTextPresent("0 items")
            .addToCart()
            .checkTextPresent("1 items");

        Assert.assertEquals(basePage.getShoppingCartTotal(), productPage.getProductPrice());

        productPage.addToCart()
            .checkTextPresent("2 items");

        Assert.assertEquals(basePage.getShoppingCartTotal(), 2*productPage.getProductPrice());
    }

}

这是一个基础测试:

public class FundamentalTest {

    protected BasePage basePage;

    @BeforeClass
    @Parameters({ "testServer" })
    public void init(String testServer) {
        basePage = PageFactory.initElements(new FirefoxDriver(), BasePage.class);
        basePage.driver.manage().timeouts().implicitlyWait(10000, TimeUnit.MILLISECONDS);
        basePage.driver.get(testServer);
    }

    @AfterClass
    public void destruct() throws InterruptedException {
        Thread.sleep(5000);
        basePage.driver.close();
    }

}

最后我的 xml 启动器:

<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" >

<suite name="SingleTestSuite" >
  <parameter name="testServer"  value="https://shop.shakhtar.com/en/"/>
  <test name="StandAloneTest">
    <groups>
        <run>
            <include name="foo"></include>
        </run>
    </groups>
    <packages>
        <package name="com.shakhtar.qa.tests" />        
    </packages>         
  </test>      
</suite>

NullPointerException 的原因是什么?我该如何解决?这是我的项目的链接

4

2 回答 2

5

只需将 (alwaysRun = true) 添加到 @BeforeClass 注释。

所以你的基础课程应该看起来像 -:

公共类 FundamentalTest {

protected BasePage basePage;

@BeforeClass(alwaysRun = true)
@Parameters({ "testServer" })
public void init(String testServer) {
    basePage = PageFactory.initElements(new FirefoxDriver(), BasePage.class);
    basePage.driver.manage().timeouts().implicitlyWait(10000, TimeUnit.MILLISECONDS);
    basePage.driver.get(testServer);
}

@AfterClass
public void destruct() throws InterruptedException {
    Thread.sleep(5000);
    basePage.driver.close();
}

}

非常感谢,这对我有用

于 2014-11-14T12:05:22.250 回答
0

似乎问题在于Function_Library(FundamentalTest)您需要在访问方法之前先运行它。

于 2013-02-18T09:32:29.953 回答