2010-10-29 65 views
0

雖然我試圖從螞蟻運行TestNG作爲'testng'任務,我收到了奇怪的行爲。 TestNG不會在@BeforeSuite方法和@Test方法的子類中創建類實例,我會得到NullPointerException。例如。運行TestNG作爲一個螞蟻任務導致錯誤

public class TestBase { 
    Page mainPage; 

    @BeforeSuite 
    public void login() { 
     ... 
     mainPage = new MainPage(); 
     ... 
    } 
} 

public class Test_1 extends TestBase { 
    @Test 
    public void test1() { 
     AlbumPage albumPage = mainPage.openAP(); //<-- here i get NullPointerException! 
     ... 
    } 
} 

這種行爲我得到只有如果使用螞蟻運行TestNG的 - 錯誤的堆棧跟蹤顯示淵源極深某處蟻類的時候,它會使用「的taskdef」從TestNG的LIB創建任務。 那麼,這裏有什麼問題?這是一個錯誤還是我做錯了什麼?

回答

0

明白了。問題出在@BeforeTest方法中。它不是在每個@Test mehod之前調用,而是在標籤之前首先調用。如果我們把所有的測試集中在一個套件中 - 結果是可預測的。

0

您可能在調用或定義ant任務的方式上出錯。

什麼是您的build.xml?什麼是堆棧跟蹤?

+0

不,請按照http://testng.org/doc/ant.html中所述完成所有操作。當我不將實例從父類傳遞給同級時,它工作正常,在Test_1類中實例化MainPage。 – endarkened 2010-10-30 05:28:01

+0

問題可能在於,TestNG創建兩個不同的實例:TestBase調用@BeforeSuite,另一個Test_1執行@Test - 我看到的唯一解釋。作爲一個框架的開發者向你提問。 – endarkened 2010-10-30 05:32:56