如何使用数据提供程序在testNG上并行运行测试?

问题描述 投票:1回答:1

我想使用数据提供程序在testng上并行运行许多测试。我想要一个线程来运行测试,而下一个线程来运行下一测试。我该怎么做?

这是我尝试过的方法,但是没有用。

@@ DataProvider(name =“ testList”,parallel = true)

在xml中:

suite name =“ knowledgetest” verbose =“ 5” configfailurepolicy =“ continue”data-provider-thread-count =“ 10” parallel =“ methods” thread-count =“ 5”

java multithreading parallel-processing testng testng-dataprovider
1个回答
0
投票

也许您没有将DataProvider传递给构造函数。

您需要执行以下操作才能并行运行测试:

TestNG config:

<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd" >

<suite name="TestNG-OddCheckerTest" verbose="1" parallel="methods" thread-count="10" data-provider-thread-count="10">
    <test name="OddCheckerTest">
        <classes>
            <class name="com.mypackage.test.OddCheckerTest" />
        </classes>
    </test>
</suite>

TestClass:

package com.mypackage.test;

import org.testng.Assert;
import org.testng.annotations.DataProvider;
import org.testng.annotations.Factory;
import org.testng.annotations.Test;

@Test
public class OddCheckerTest {

    private long number;

    @Factory(dataProvider = "numberList")
    public OddCheckerTest(long number) {
        this.number = number;
    }

    @DataProvider(name = "numberList", parallel = true)
    public static Object[][] getNumber() {
        return new Object[][]{
                {1}, {3}, {5}, {77}, {111}, {123}, {287}, {305}, {505}, {607}, {709}, {803}, {805}
        };
    }

    @Test
    public void testForOdd() throws InterruptedException {
        System.out.println(Thread.currentThread().getName() +  ": checking that [ " + number + " ] it's odd!");
        Thread.sleep(1000);
        Assert.assertTrue(number % 2 == 1, "Number [" + number + "] is not odd!");
    }
}

输出:enter image description here

© www.soinside.com 2019 - 2024. All rights reserved.