测试工厂调用另一个测试工厂

时间:2017-03-06 03:30:49

标签: testng

需要一个方向。我到处搜索但无法得到一个测试工厂是否可以调用另一个测试工厂的答案。

示例:第一个测试工厂为我提供测试套件,对于每个套件,调用另一个测试工厂来获取该套件的测试用例。

以下是示例代码:

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);
    }
}

1 个答案:

答案 0 :(得分:0)

我不确定用例背后的目标,但您目前无法做到的事情(而且我认为它永远不可能)。

@Factory是一种向TestNG解释它应该如何创建类的实例(在构造函数上时)的方法,或者让你自己负责创建实例(在方法上时)。

如果您自己创建实例,则不能指望TestNG会做额外的事情。

根据您的示例,TestNG应该有4个clsTestCases实例:"套件#1","套件#2","案例# 1" "案例#2"。