如何在具有@DataProvider、@Factory 和一个@Test 方法的TestNG 中配置多线程

How to configure multi-threading in TestNG having @DataProvider, @Factory and one @Test method

我想在我的 class 中使用多线程,即我的 @Test 方法应该 运行 并行。

测试 class 有一个 @Test 注释方法,一个 @DataProvider 和一个 @Factory 方法,它是我的测试-class 的构造函数。

我也重写了 getTestName(ITest class) 方法。我的测试数据有 28 个场景。

编辑

@Listeners com.loyalty.HTMLReporter.class
public class TestClass implemented ITest {

@DataProvider 
public static Object[][] dp () {
//I read test data from a file. The test-data could vary from 2 to 1000         
//scenarios.
Object tests [][] = new Object [testcaseIdMap.keyset().toArray().length][];

    for (Object ket : testcaseIdMap.keySet().toArray()){
        tests[i] = new Object[1];
        tests[i][0] = key.toString();
        i++;
    }
return tests 
}

@Factory (dataProvider = "dp")
public TestClass (String testcaseId) {
this.testcaseId = testcaseId;
}

@Test
public void TC () {
//some code
}

@Override
public String getTestName () {
return testcaseId;
}

@BeforeSuite
public void createDBConnection () {
// some code
}

@AfterSuite
public void failedTestCases () {
//some code
}

转到:http://testng.org/doc/documentation-main.html 并阅读:
5.6.2 - DataProvider 的参数
也在:
5.10 - 并行度和超时
您将找到有关如何并行创建 test_suite.xml 到 运行 测试的信息

如果您想 运行 您的测试方法并行,请创建一个测试套件 xml 文件,如下所示

<suite name="Your suite name" parallel="methods" thread-count="2" >
    <test name="Your test name">
        <classes>
            <class name="packagename.classname" />
        </classes>
     </test>
</suite>

根据需要设置线程数。

如果你想运行你的数据提供者并行,然后在数据提供者注释中添加parallel=true。

@DataProvider(name = "dataprovidername",parallel=true)