Как выполнить тесты JUnit параллельно для одного тестового класса в Gradle

У нас есть много интеграционных тестов, которые используют весной. Мы не хотели бы создавать отдельные процессы JVM для тестов (опция maxParallelForks) или запускать только параллельные сборки в многомодульном проекте (--parallel).

мы хотели бы, чтобы один тестовый класс выполнял тесты параллельно, как в Maven с http://maven.apache.org/surefire/maven-surefire-plugin/examples/fork-options-and-parallel-execution.html и параллельный вариант

важная вещь, котор нужно вспомнить с параллельным вариантом является следующим: параллелизм происходит в одном и том же процессе JVM.

можно ли достичь в Gradle?

2 ответов


Весна 5: новый ребенок на блоке

С весны 5 Вы можете запускать тесты Junit (используя Весна TestContext Рамках) параллельно, что, я думаю, и есть то, что вы ищете: одновременное выполнение в одной и той же JVM.

посмотреть блог Baeldung для получения дополнительной информации.


оригинальный ответ:

здесь Gradle doc объяснение задач плагина Java в Gradle и вот API док!--9--> объясняя параметры для указанного плагина.

пожалуйста, посмотрите ближе на forkEvery и maxParallelForks параметры.

установка их должна дать вам достаточно контроля для достижения параллельного выполнения теста.

здесь так ответа указывая на то, что значение maxParallelForks должно быть установлено, чтобы максимизировать ускорение.


@MariuszS ответ был лучшим

Gradle-это ant без xml, возможно, это может вам помочь ant.apache.org/manual/Tasks/parallel.html :)

самый близкий способ достичь этого описан здесь -https://discuss.gradle.org/t/how-to-use-ants-parallel-target/6720/5

task runAllTestsByGroups << {
      ant.parallel(threadsPerProcessor: 1) {
                    ant.junit (...) {
            // run test group 1
            ...
        }
          ant.junit(...) {
            // run test group 2
            ...
       }
         // run group 3, 4, 5 ...
    }
  }