Запуск параллельной тестовой задачи с помощью gradle

Мы используем Junit как тестовую структуру. У нас много проектов. Мы используем gradle (Version 1.12) как инструмент построения. Для параллельного запуска unit test с использованием gradle мы используем ниже script в каждом проекте, находящемся в тестовой задаче.

maxParallelForks = Runtime.runtime.availableProcessors()

Пример:

 test {    
         maxParallelForks = Runtime.runtime.availableProcessors()       
    }

Мы сохраняем единственный файл gradle.properties. Возможно ли определить test.maxParallelForks = Runtime.runtime.availableProcessors() в файле gradle.properties вместо определения в каждом файле build.gradle в тестовой задаче?

Ответ 1

$rootDir/build.gradle:

subprojects {
    tasks.withType(Test) {
        maxParallelForks = Runtime.runtime.availableProcessors()
    }
}

Ответ 2

Принятый ответ выше работает, но gradle документация здесь предлагает использовать

maxParallelForks = Runtime.runtime.availableProcessors().intdiv(2) ?: 1

Я попробовал оба и после тестирования как на 2,3 ГГц Intel Core i7 Mac Book Pro с 16 ГБ оперативной памяти (4 ядра с гиперпотоком)

maxParallelForks = Runtime.runtime.availableProcessors()

и

maxParallelForks = Runtime.runtime.availableProcessors().intdiv(2) ?: 1

Подход, предложенный документацией gradle, вызвал более быстрое время отклика для нашего пакета unit test: 7 минут против 8 минут (по сравнению с оригинальными 13 минутами). Кроме того, мой Mac-процессор не получил привязки и вентилятор не начинал.

Я предполагаю, что на общем ресурсе есть либо конфликт, даже если это только машина, на которой мы выполняем модульные тесты.