2015-09-25 68 views
0

我使用數據提供程序向測試提供數據。測試類有3個測試。我希望三個測試能夠依次運行數據提供者提供的每個數據實例。我嘗試了以下方法,但是這對於數據提供者提供的所有數據完全運行testOne,然後運行testTwo,然後運行testThree。在testng中使用dataprovider提供數據時依次運行測試

public class TestClass{ 

    @Test(@dataProvider = "getData") 
    public void testOne(){ 
     //Test case logic 
     } 

    @Test(@dataProvider = "getData") 
    public void testTwo(){ 
     //Test case logic 
     } 

    @Test(@dataProvider = "getData") 
    public void testThree(){ 
     //Test case logic 
     } 

    @DataProvider 
    public Object[][] getData() { 
     //data provider code 
     } 

} 

誰能告訴我如何運行三個測試由數據提供者所提供的數據實例,然後運行三個測試下一個數據實例等..

感謝

+0

我想單元測試是錯的,如果它必須依賴的方法和測試數據呼叫順序。你能解釋爲什麼你需要這樣的限制嗎? – Gedrox

+0

HI Gedrox ..我沒有嘗試這個單元測試。我們正在嘗試進行功能測試的UI級別。每個測試都針對前端的特定場景進行測試。每個測試都涉及打開瀏覽器實例。我們不希望爲所有測試打開瀏覽器實例,因爲這會導致測試執行時間延遲。 – sujith

+0

也許這個問題有幫助 - http://stackoverflow.com/questions/358802/junit-test-with-dynamic-number-of-tests。 – Gedrox

回答

0

這將這樣的伎倆:

public class TestClass { 

    @Test(dataProvider = "getData") 
    public void allTests() { 
    testOne(); 
    testTwo(); 
    testThree(); 
    } 

    private void testOne(){ 
    //Test case logic 
    } 
    private void testTwo(){ 
    //Test case logic 
    } 
    public void testThree(){ 
    //Test case logic 
    } 

    @DataProvider 
    public Object[][] getData() { 
    //data provider code 
    } 

}