testng-team / testng-team/testng
Parallel=instances run tests of same instance on different threads
Nobody has claimed this yet.
- Dominant language
- Java
- Stars
- 2.1k
- Forks
- 1k
- Avg merge
- 2d 35m
- Merged PRs (30d)
- 81
Description
The documentation says that
• parallel="instances": TestNG will run all the methods in the same instance in the same thread, but two methods on two different instances will be running in different threads.
However test methods for the same instances are running on different threads. Please see https://github.com/nmanandhar/TestNGParallelBehaviorTest.git
public class TestClassA {
private static AtomicInteger instanceCount = new AtomicInteger(0);
public TestClassA() {
instanceCount.incrementAndGet();
log("A new instance of TestClassA created");
}
@AfterSuite
public void printNumberOfInstances() {
log("Number of instances of TestClassA = " + instanceCount.get());
}
@Test
public void testA1() throws Exception {
log("testA1 of TestInstance " + this);
}
@Test(dependsOnMethods = "testA1")
public void testB1() {
log("testB1 of TestInstance " + this);
}
@Test(dataProvider = "integerProvider")
public void testDataProvider(int number) throws Exception {
log("testDataProvider : number = " + number + " testInstance = " + this);
}
@DataProvider
public Object[][] integerProvider() {
return new Object[][]{
{1},
{2}
};
}
private void log(String message) {
String threadName = Thread.currentThread().getName();
synchronized (System.out) {
System.out.println(String.format("Thread %s : %s ", threadName, message));
}
}
}
Suite File
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
<suite name="InstanceTestSuite" parallel="instances" thread-count="5">
<test name="InstanceTest">
<classes>
<class name="com.nm.TestClassA"/>
</classes>
</test>
</suite>
Output of mvn test
Running TestSuite
Thread main : A new instance of TestClassA created
Thread pool-1-thread-1 : testA1 of TestInstance com.nm.TestClassA@58ee2549
Thread pool-1-thread-1 : testDataProvider : number = 1 testInstance = com.nm.TestClassA@58ee2549
Thread pool-1-thread-1 : testDataProvider : number = 2 testInstance = com.nm.TestClassA@58ee2549
Thread pool-1-thread-2 : testB1 of TestInstance com.nm.TestClassA@58ee2549
Thread main : Number of instance = 1
Tests run: 4, Failures: 0, Errors: 0, Skipped: 0, Time elapsed: 0.835 sec - in TestSuite
Contributor guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
Research direction
Start by running the linked TestClassA reproduction with the shown suite XML and mvn test, comparing thread names for methods on the same instance. Trace the parallel="instances" execution entry point and its scheduling behavior; done means all methods for one instance run on the same thread while different instances may use different threads.
Written by the indexing model from the issue text.
Assessment
- Tech stack
- java
- Domain
- testing
- Issue type
- Bug
- Difficulty
- 4/5
- Estimated time
- 3-5 days
- Activity status
- Active
- Clarity
- Mostly clear
- Newbie friendliness
- 48/100