2012-02-20 17 views
46

Durante il test, Gradle sembra reindirizzare stdout/stderr su project_dir/build/reports/tests/index.html. C'è un modo per evitare questo reindirizzamento e far stampare le cose sulla console?Registrazione durante il test tramite Gradle

Ulteriori informazioni:

  • Si tratta di un progetto 2.9.1 Scala.
  • Sto utilizzando slf4s per la registrazione.

risposta

63
apply plugin : 'java' 

test { 
    testLogging.showStandardStreams = true 
} 

http://gradle.org/docs/current/dsl/org.gradle.api.tasks.testing.Test.html

Questo richiede una versione Gradle corrente. Suppongo che i test di Scala vengano eseguiti sotto l'attività di test di Java.

+6

Appena testato. Non funziona – missingfaktor

+0

Ops sui test sembra che non lo fa, questo produce un output per me però: http://pastebin.com/PX8e1EKv edit: modificare la println a una stampa come penso l'evento cattura il ritorno a capo – roby

+0

grazie . Ci proverò anche io. Ho anche alcune dichiarazioni di registro nei file sorgente. Come faccio a farli stampare su console? – missingfaktor

10

sto usando anche (testLogging.exceptionFormat = 'full'):

test { 
    testLogging.showStandardStreams = true 
    testLogging.exceptionFormat = 'full' 
} 

Che è buono per vedere più da stacktrace

+0

L'impostazione 'exceptionFormat' ha funzionato per me,' showStandardStreams' non ha avuto alcun effetto! – Shakeel

9

Come @roby rispose:

aggiungendo il seguente codice al build.gradle

apply plugin : 'java' 

test { 
    testLogging.showStandardStreams = true 
} 

Importante!

È necessario eseguire test gradle o build con il comando clean aggiunto.

./gradlew clean test 

or 

./gradlew clean build 

Spero che funzioni.

+1

Potresti spiegare perché sarebbe necessario "pulire"? –

+1

@MichaelKanis perché hai cambiato la configurazione gradle. Per quanto ne so, la configurazione gradle è memorizzata nella cache. – nmfzone

+0

@nmfzone che significa che è necessario eseguire un test pulito una volta per aggiornare la cache. Ma nel mio scenario, ho bisogno di eseguire il comando clean ogni volta solo per mostrare il risultato del test su console. Anche se non viene apportata alcuna modifica alla configurazione gradle nelle seguenti esecuzioni. –

7

Questo mi funziona:

test { 
    testLogging { 
     showStandardStreams = true 
    } 
} 
5

Per Android Gradle file

Se sei all'interno di un file Gradle Android (se apply plugin: 'com.android.application' è nella parte superiore del file build.gradle)

Poi incollalo in build.Gradle

// Test Logging 
tasks.withType(Test) { 
    testLogging { 
     events "standardOut", "started", "passed", "skipped", "failed" 
    } 
} 
0

Giusto per aggiungere, il:

showStandardStreams = true 

è un shorthand per:

events = ["standard_out", "standard_error"] 

E 'importante tenere questo in mente quando si mescolano entrambe le voci come la seguente:

test { 
    testLogging { 
     showStandardStreams = true 
     events = ["passed", "failed", "skipped"] 
    } 
} 

wil l risultati non stdout mentre l'ordine inverso:

test { 
    testLogging { 
     events = ["passed", "failed", "skipped"] 
     showStandardStreams = true 
    } 
} 

aggiungerà le voci stdout all'elenco, quindi stdout funzionerà.

Vedere the source per dettagli.

Problemi correlati