2014-05-22 3 views
16

Usiamo Junit come framework di test. Abbiamo molti progetti. Usiamo gradle (versione 1.12) come strumento di costruzione. Per eseguire il test dell'unità parallelamente usando gradle, usiamo lo script muggito in ogni progetto in fase di test.Eseguire attività di prova parallela utilizzando gradle

maxParallelForks = Runtime.runtime.availableProcessors() 

Es:

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

Manteniamo il file anche i singoli gradle.properties. E 'possibile definire test.maxParallelForks = Runtime.runtime.availableProcessors() nel file gradle.properties piuttosto che definire in ogni file build.gradle in attività di test?

risposta

26

$rootDir/build.gradle:

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

La documentazione di gradazione FYI suggerisce di non utilizzare tutti i core disponibili https://gradle.github.io/performance-guide/#_parallel_test_execution Vedere la risposta sotto – kellyfj

+2

Il collegamento sopra riportato non ha funzionato. Prova https://docs.gradle.org/current/userguide/java_plugin.html#sec:test_execution –

+0

Di seguito è riportato l'errore che ottengo. Errore: (69, 0) Impossibile impostare la proprietà sconosciuta 'maxParallelForks' per il contenitore di configurazione di tipo org.gradle.api.internal.artifacts.configurations.DefaultConfigurationContainer. Open File fobbymaster

14

la risposta accettata sopra funziona ma la documentazione Gradle here suggerisce di utilizzare

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

Ho provato entrambi e dopo il test sia a 2.3 GHz Intel Core i7 Mac Book Pro con 16 GB di RAM (4 core con hyperthreading)

maxParallelForks = Runtime.runtime.availableProcessors() 

e

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

L'approccio suggerito dalla documentazione prodotta Gradle tempi di risposta più rapidi per la nostra suite di test di unità: 7 minuti vs 8 minuti (rispetto a quello originale 13 minuti). Inoltre, la mia CPU Mac non è stata ancorata e il ventilatore non si è avviato.

Suppongo che ci sia una contesa su una risorsa condivisa - anche se è solo la macchina su cui stiamo eseguendo i test dell'unità.