Я хотел бы запускать тесты параллельно, используя Gradle.Мои эксперименты показывают, что Gradle запускает тесты параллельно на уровне класса.Мне нужно, чтобы они выполнялись на уровне метода.
Имеется два таких тестовых класса:
public class OneTest {
@Test
public void should_sleep_4_seconds() throws Exception {
System.out.println("Start 4 seconds");
Thread.sleep(4000);
System.out.println("Done 4 seconds");
}
}
public class ManyTest {
@Test
public void should_sleep_1_seconds() throws Exception {
System.out.println("Start 1 seconds");
Thread.sleep(1000);
System.out.println("Done 1 seconds");
}
@Test
public void should_sleep_2_seconds() throws Exception {
System.out.println("Start 2 seconds");
Thread.sleep(2000);
System.out.println("Done 2 seconds");
}
}
И такой скрипт сборки:
plugins {
id 'java'
}
sourceCompatibility = '1.8'
targetCompatibility = '1.8'
dependencies {
testCompile 'junit:junit:4.12'
}
test {
testLogging.showStandardStreams = true
maxParallelForks = 3
}
repositories {
mavenCentral()
}
Я могу получить такой результат:
./gradlew clean test
> Task :test
se.thinkcode.ManyTest > should_sleep_2_seconds STANDARD_OUT
Start 2 seconds
se.thinkcode.OneTest > should_sleep_4_seconds STANDARD_OUT
Start 4 seconds
se.thinkcode.ManyTest > should_sleep_2_seconds STANDARD_OUT
Done 2 seconds
se.thinkcode.ManyTest > should_sleep_1_seconds STANDARD_OUT
Start 1 seconds
Done 1 seconds
se.thinkcode.OneTest > should_sleep_4_seconds STANDARD_OUT
Done 4 seconds
BUILD SUCCESSFUL in 5s
3 actionable tasks: 3 executed
Это говорит мне, что есть параллелизм, но он только на уровне класса, а не на уровне метода.
Есть ли какой-нибудь нативный способ сделать Gradleвыполнить выполнение в одном потоке для каждого метода тестирования?