mvn test не соответствует порядку выполнения тестов, закодированных с помощью аннотации TestNG depenOnGroups
Я попытался запустить проект в Eclipse Run As TestNG Test.Он выполняется в ожидаемом порядке.
package com.chain;
StreamTest.java:
@Test(groups = { "main" })
public class StreamTest {
static int durationBase = 2000;
protected Logger logger = Logger.getLogger(this.getClass().getName());
@BeforeClass()
public void beforeClassMethod() throws InterruptedException {
logger.info("Thread id: " + Thread.currentThread().getId());
Thread.sleep((long) (durationBase * Math.random()));
}
public void testMethod1() throws InterruptedException {
logger.info("Thread id: " + Thread.currentThread().getId());
Thread.sleep((long) (durationBase * Math.random()));
}
public void testMethod2() throws InterruptedException {
logger.info("Thread id: " + Thread.currentThread().getId());
Thread.sleep((long) (durationBase * Math.random()));
}
@AfterClass()
public void afterClassMethod() throws InterruptedException {
logger.info("Thread id: " + Thread.currentThread().getId());
Thread.sleep((long) (durationBase * Math.random()));
}
}
EndStreamTest.java:
package com.chain;
@Test(dependsOnGroups = { "main.*" })
public class EndStreamTest {
static int durationBase = 2000;
protected Logger logger = Logger.getLogger(this.getClass().getName());
@BeforeClass
public void beforeClassMethod() throws InterruptedException {
logger.info("Thread id: " + Thread.currentThread().getId());
Thread.sleep((long) (durationBase * Math.random()));
}
@Test(dependsOnGroups = { "main" }, groups = { "cleanup" })
public void testMethod1() throws InterruptedException {
logger.info("Thread id: " + Thread.currentThread().getId());
Thread.sleep((long) (durationBase * Math.random()));
}
}
testng.xml:
<?xml version="1.0" encoding="UTF-8"?>
<!DOCTYPE suite SYSTEM "http://testng.org/testng-1.0.dtd">
<suite name="Suite" parallel="classes" thread-count="10">
<test name="Stonecress Tests">
<packages>
<package name="com.chain" />
</packages>
</test>
</suite>
POM.xml:
<build>
<pluginManagement>
<plugins>
<plugin>
<groupId>org.apache.maven.plugins</groupId>
<artifactId>maven-surefire-plugin</artifactId>
<version>2.19.1</version>
<configuration>
<!-- Suite testng xml file to consider for test execution -->
<suiteXmlFiles>
<suiteXmlFile>testng.xml</suiteXmlFile>
</suiteXmlFiles>
</configuration>
</plugin>
</plugins>
</pluginManagement>
</build>
Ожидаемые результаты (отлично работает на Eclipse. Запустите Project as TestNG Test):
28 января 2019 г. 16:59:34 com.chain.StreamTest beforeClassMethod
ИНФОРМАЦИЯ: Идентификатор потока: 1
28 января 2019 16:59:36 com.chain.StreamTest testMethod1
ИНФОРМАЦИЯ: Идентификатор потока: 1
28 января 2019 г. 16:59:38 com.chain.StreamTest testMethod2
ИНФОРМАЦИЯ: Идентификатор потока: 1
28 января 2019 г. 16:59:39 com.chain.StreamTest afterClassMethod
ИНФОРМАЦИЯ: Идентификатор потока: 1
28 января 2019 16:59:40 com.chain.EndStreamTest beforeClassMethod
ИНФОРМАЦИЯ: Идентификатор потока:1
28 января 2019 г. 16:59:40 com.chain.EndStreamTest testMethod1
ИНФОРМАЦИЯ: Идентификатор темы: 1
28 января 2019 г. 4:59:42PM com.chain.EndStreamTest testMethod2
Фактические результаты (при запуске из командной строки с помощью теста mvn):
28 января 2019 г. 16:52:41 com.chain.StreamTestbeforeClassMethod
ИНФОРМАЦИЯ: Идентификатор потока:15
28 января 2019 г. 16:52:41 com.chain.EndStreamTest beforeClassMethod
ИНФОРМАЦИЯ: Идентификатор потока: 18
28 января 2019 г. 4:52:41PM com.chain.StreamTest testMethod1
ИНФОРМАЦИЯ: Идентификатор потока: 15
28 января 2019 16:52:42 com.chain.EndStreamTest testMethod1
ИНФОРМАЦИЯ: Темаid: 18
28 января 2019 г. 16:52:43 com.chain.EndStreamTest testMethod2
ИНФОРМАЦИЯ: идентификатор темы: 18
28 января 2019 г. 4:52: 43 PM com.chain.StreamTest testMethod2
ИНФОРМАЦИЯ: Идентификатор потока: 15
28 января 2019 16:52:43 com.chain.StreamTest afterClassMethod
ИНФО: Идентификатор темы: 17