2012-02-20 11 views
46

Durante la prueba, Gradle parece redireccionar stdout/stderr a project_dir/build/reports/tests/index.html. ¿Hay alguna forma de evitar esta redirección y, en cambio, imprimir cosas en la consola?Registro durante la prueba a través de Gradle

Información adicional:

  • Es un proyecto Scala 2.9.1.
  • Estoy usando slf4s para el registro.

Respuesta

63
apply plugin : 'java' 

test { 
    testLogging.showStandardStreams = true 
} 

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

Esto requiere una versión Gradle actual. Estoy asumiendo que las pruebas de Scala se ejecutan bajo la tarea de prueba de Java.

+6

Acabo de probarlo. No funciona – missingfaktor

+0

chillidos en las pruebas parece que no es así, esto produce una salida para mí, sin embargo: http://pastebin.com/PX8e1EKv edición: modificar el println a una impresión como creo que el evento capta la nueva línea – roby

+0

gracias . Voy a intentar eso también. Tengo algunas declaraciones de registro en los archivos fuente también. ¿Cómo puedo hacer que se impriman en la consola? – missingfaktor

10

estoy usando también (testLogging.exceptionFormat = 'full'):

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

Lo cual es bueno para ver más de StackTrace

+0

La configuración 'exceptionFormat' me funcionó,' showStandardStreams' no tuvo efecto! – Shakeel

9

Como @roby respondió:

añadir el siguiente código a su build.gradle

apply plugin : 'java' 

test { 
    testLogging.showStandardStreams = true 
} 

¡Importante!

Debe ejecutar prueba o compilación gradle con el comando clean añadido.

./gradlew clean test 

or 

./gradlew clean build 

Hope that works.

+1

¿Podría explicar por qué se necesitaría "limpio"? –

+1

@MichaelKanis porque ha cambiado la configuración de Gradle ... por lo que sé, la configuración de gradle está en caché. – nmfzone

+0

@nmfzone, lo que significa que debe ejecutar una prueba limpia una vez para actualizar la caché. Pero en mi caso, necesito ejecutar un comando limpio cada vez solo para mostrar el resultado de la prueba en la consola. Aunque no se realiza ningún cambio en la configuración de gradle en las siguientes ejecuciones. –

7

Esto me funciona:

test { 
    testLogging { 
     showStandardStreams = true 
    } 
} 
5

Para Android Archivos Gradle

Si está dentro de un archivo Gradle androide (si es apply plugin: 'com.android.application' en la parte superior de su archivo build.gradle)

Entonces pegar esto en la construcción.Gradle

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

Sólo para añadir, al:

showStandardStreams = true 

es una shorthand para:

events = ["standard_out", "standard_error"] 

Es importante tener esto en cuenta a la hora de mezclar ambas entradas de la siguiente manera:

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

wil l resultado en no stdout mientras que el orden inverso:

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

agregará las entradas stdout a la lista, por lo stdout trabajará.

Ver the source para más detalles.

Cuestiones relacionadas