gpt4 book ai didi

java - 在 TestNG 中与 @Factory 并行运行测试类

转载 作者:行者123 更新时间:2023-12-01 21:26:25 25 4
gpt4 key购买 nike

总共有5个测试类。它们中的每一个都使用 @Factory(dataprovider = "data") 进行初始化。我想要实现的是,每个测试类中的测试方法应该与 dataprovider 实例并行运行。此外,测试类应该并行运行。

类似下面的内容。 TestClass1 应该并行运行 dataprovider 实例。因此,测试类 TestClass1 的所有方法都将为 dataprovider 实例并行运行。

此外,与 TestClass1 一样,还有 2 个其他测试类。我期望它们有相同的行为,并且所有 3 个测试类并行运行。

testng.xml中安排测试类和参数

data-provider-thread-count="10" parallel="instances" thread-count="5""

在套件级别和测试级别,

parallel="instances" thread-count="5"

观察到的行为是,由 dataprovider 实例创建的 TestClass1 实例并行运行。 TestClass2和TestClass3尚未开始执行。 TestClass1 结束后不久,TestClass2 以与 TestClass1 相同的方式开始执行,然后是 TestClass3。

我需要做出哪些改变才能实现预期的行为。

提前谢谢。

import java.util.ArrayList;
import java.util.Iterator;
import java.util.List;

import org.testng.Assert;
import org.testng.annotations.DataProvider;
import org.testng.annotations.Factory;
import org.testng.annotations.Listeners;
import org.testng.annotations.Test;
import org.testng.reporters.EmailableReporter2;

@Listeners({ TestExecutionListener.class, EmailableReporter2.class })
public class TestClass {

private int value;

@Factory(dataProvider = "data", dataProviderClass = TestClass.class)
public TestClass(final int value) {
this.value = value;
}

@Test(alwaysRun = true)
public void testOdd() {
Assert.assertTrue(value % 2 != 0);
}

@Test(alwaysRun = true)
public void testEven() {
Assert.assertTrue(value % 2 == 0);
}

@DataProvider(name = "data")
public static Iterator<Object[]> data() {

List<Object[]> list = new ArrayList<>();
for (int i = 0; i < 2; i++) {
list.add(new Object[] { i });
}
return list.iterator();
}
}

testng.xml

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
<suite name="mobile rc automation suite"
data-provider-thread-count="10" parallel="instances" thread-count="5">

<test name="test_1" parallel="instances"
thread-count="5">
<classes>
<class name="com.test.TestClass1" />
</classes>
</test>

<test name="test_2" parallel="instances"
thread-count="5">
<classes>
<class name="com.test.TestClass2" />
</classes>
</test>

<test name="test_3" parallel="instances"
thread-count="5">
<classes>
<class name="com.test.TestClass3" />
</classes>
</test>

</suite>

最佳答案

我终于能够使用给定的 testNG xml 并行运行 中存在的 @Factory 测试类

<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
<suite name="mobile rc automation suite"
data-provider-thread-count="10" parallel="tests" thread-count="5">

<test name="test_1" parallel="instances"
thread-count="5">
<classes>
<class name="com.test.TestClass1" />
</classes>
</test>

<test name="test_2" parallel="instances"
thread-count="5">
<classes>
<class name="com.test.TestClass2" />
</classes>
</test>

<test name="test_3" parallel="instances"
thread-count="5">
<classes>
<class name="com.test.TestClass3" />
</classes>
</test>

</suite>

关于java - 在 TestNG 中与 @Factory 并行运行测试类,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38111736/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com