2017-03-06 152 views
0

需要一個方向。我到處搜索,但無法得到答案,無論測試工廠是否可以打電話給另一家測試工廠。測試工廠調用另一個測試工廠

示例:第一個測試工廠爲我提供測試套件,併爲每個套件調用另一個測試工廠,以獲得該套件的測試用例。

下面是一個示例代碼:

public class clsTestSuites{ 
    @Factory(dataProvider="dataSuites") 
    public Object[] createTestSuites(int id, String TestSuite) {   
     return new Object[] {new clsTestCases(id, TestSuite)};   
    } 

    @DataProvider(name="dataSuites") 
    public static Object[][] dataProviderForTestSuites() { 
     Object[][] dataArray = {{1, "Suite#1"},{2, "Suite#2"}}; 
     return dataArray; 
    } 
} 

public class clsTestCases{ 
    private int id; 
    private String TestSuite; 

    @Factory(dataProvider="dataCases") 
    clsTestCases(int id, String TestSuite){ 
    this.id = id; 
    this.TestSuite = TestSuite; 
    }  

    @DataProvider(name="dataCases") 
    public static Object[][] dataProviderForTestCases() { 
     Object[][] dataArray = {{1, "Case#1"},{2, "Case#2"}}; 
     return dataArray; 
    } 

    /*** i dont want to do this at present::: @Test (dataProvider="dataCases") ***/ 
    public void runTestCases(int id, String TestCase) { 
     System.out.println("Executing Test Case "+ TestCase); 
     assertTrue(true); 
    } 
} 

回答

0

我不知道了解使用情況,但你正在試圖做的是目前無法後面的目標(我覺得它永遠不會)。

@Factory是一種向TestNG解釋如何創建類的實例(在構造函數中時)的方法,還是讓您有責任自己創建實例(在方法上時)。

如果你自己創建實例,你不能指望TestNG會做額外的事情。

根據您的示例,TestNG應該有4個clsTestCases實例:「Suite#1」,「Suite#2」,「Case#1」和「Case#2」。

+0

Thanks @juherr。 –

+0

那麼你是說,Test Factory-1不可能調用另一個Test Factory-2。有什麼建議麼? –