2014-05-22 8 views
16

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

maxParallelForks = Runtime.runtime.availableProcessors() 

Ex:

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

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

ответ

26

$rootDir/build.gradle:

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

Документация по градиенту FYI предлагает не использовать все доступные ядра https://gradle.github.io/performance-guide/#_parallel_test_execution См. Мой ответ ниже – kellyfj

+2

Неправильная ссылка не работает. Попробуйте https://docs.gradle.org/current/userguide/java_plugin.html#sec:test_execution –

+0

Ниже приведена ошибка, которую я получаю. Ошибка: (69, 0) Не удалось установить неизвестное свойство 'maxParallelForks' для контейнера конфигурации типа org.gradle.api.internal.artifacts.configurations.DefaultConfigurationContainer. Open File fobbymaster

14

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

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 документации производится более быстрое время отклика для нашего блока тестов: 7 минут против 8 минут (по сравнению с первоначальными 13 минут). Кроме того, мой Mac-процессор не получил привязки и вентилятор не начинал.

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

Смежные вопросы