test serp seomofo google checker check testing console gradle

testing - serp - test seo tags



Gradle: ¿Cómo mostrar los resultados de la prueba en la consola en tiempo real? (11)

Me gustaría ver los resultados de las pruebas (system.out / err, mensajes de registro de los componentes que se prueban), ya que se ejecutan en la misma consola que ejecuto:

gradle test

Y no espere hasta que se realicen las pruebas para ver los informes de prueba (que solo se generan cuando se completan las pruebas, por lo que no puedo "ajustar" nada mientras se ejecutan las pruebas)


Agregue esto a build.gradle para evitar que gradle trague stdout y stderr.

test { testLogging.showStandardStreams = true }

Está documentado here .


Aquí está mi versión elegante:

import org.gradle.api.tasks.testing.logging.TestExceptionFormat import org.gradle.api.tasks.testing.logging.TestLogEvent tasks.withType(Test) { testLogging { // set options for log level LIFECYCLE events TestLogEvent.FAILED, TestLogEvent.PASSED, TestLogEvent.SKIPPED, TestLogEvent.STANDARD_OUT exceptionFormat TestExceptionFormat.FULL showExceptions true showCauses true showStackTraces true // set options for log level DEBUG and INFO debug { events TestLogEvent.STARTED, TestLogEvent.FAILED, TestLogEvent.PASSED, TestLogEvent.SKIPPED, TestLogEvent.STANDARD_ERROR, TestLogEvent.STANDARD_OUT exceptionFormat TestExceptionFormat.FULL } info.events = debug.events info.exceptionFormat = debug.exceptionFormat afterSuite { desc, result -> if (!desc.parent) { // will match the outermost suite def output = "Results: ${result.resultType} (${result.testCount} tests, ${result.successfulTestCount} successes, ${result.failedTestCount} failures, ${result.skippedTestCount} skipped)" def startItem = ''| '', endItem = '' |'' def repeatLength = startItem.length() + output.length() + endItem.length() println(''/n'' + (''-'' * repeatLength) + ''/n'' + startItem + output + endItem + ''/n'' + (''-'' * repeatLength)) } } } }


Como Stefanglase respondió:

agregar el siguiente código a su build.gradle (desde la versión 1.1) funciona bien para la salida en pruebas pasadas , omitidas y fallidas .

test { testLogging { events "passed", "skipped", "failed", "standardOut", "standardError" } }

Lo que quiero decir adicionalmente (descubrí que esto es un problema para los principiantes) es que el gradle test ejecuta la prueba solo una vez por cambio .

Entonces, si lo está ejecutando la segunda vez, no habrá salida en los resultados de la prueba . También puede ver esto en la salida del edificio: gradle luego dice UP-TO-DATE en las pruebas. Entonces no se ejecuta en enésima vez.

¡Gradle inteligente!

Si desea forzar la ejecución de los casos de prueba, use la gradle cleanTest test .

Esto está un poco fuera de tema, pero espero que ayude a algunos novatos.

editar

Como sparc_spread declaró en los comentarios:

Si desea obligar a Gradle a ejecutar siempre nuevas pruebas (lo que puede no ser siempre una buena idea), puede agregar outputs.upToDateWhen {false} a testLogging { [...] } . Continúa leyendo here .

Paz.


Como seguimiento de la gran respuesta de Shubham, me gusta sugerir el uso de valores enum en lugar de cadenas . Por favor, eche un vistazo a la documentación de la clase TestLogging .

import org.gradle.api.tasks.testing.logging.TestExceptionFormat import org.gradle.api.tasks.testing.logging.TestLogEvent tasks.withType(Test) { testLogging { events TestLogEvent.FAILED, TestLogEvent.PASSED, TestLogEvent.SKIPPED, TestLogEvent.STANDARD_ERROR, TestLogEvent.STANDARD_OUT exceptionFormat TestExceptionFormat.FULL showCauses true showExceptions true showStackTraces true } }


En Gradle usando el complemento de Android:

gradle.projectsEvaluated { tasks.withType(Test) { task -> task.afterTest { desc, result -> println "Executing test ${desc.name} [${desc.className}] with result: ${result.resultType}" } } }

Entonces la salida será:

Ejecutando la prueba testConversionMinutes [org.example.app.test.DurationTest] con el resultado: SUCCESS


La fusión de la gran respuesta de Shubham y JJD usan enum en lugar de cadena

tasks.withType(Test) { testLogging { // set options for log level LIFECYCLE events TestLogEvent.PASSED, TestLogEvent.SKIPPED, TestLogEvent.FAILED, TestLogEvent.STANDARD_OUT showExceptions true exceptionFormat TestExceptionFormat.FULL showCauses true showStackTraces true // set options for log level DEBUG and INFO debug { events TestLogEvent.STARTED, TestLogEvent.PASSED, TestLogEvent.SKIPPED, TestLogEvent.FAILED, TestLogEvent.STANDARD_OUT, TestLogEvent.STANDARD_ERROR exceptionFormat TestExceptionFormat.FULL } info.events = debug.events info.exceptionFormat = debug.exceptionFormat afterSuite { desc, result -> if (!desc.parent) { // will match the outermost suite def output = "Results: ${result.resultType} (${result.testCount} tests, ${result.successfulTestCount} successes, ${result.failedTestCount} failures, ${result.skippedTestCount} skipped)" def startItem = ''| '', endItem = '' |'' def repeatLength = startItem.length() + output.length() + endItem.length() println(''/n'' + (''-'' * repeatLength) + ''/n'' + startItem + output + endItem + ''/n'' + (''-'' * repeatLength)) } } } }


La tarea de ''prueba'' no funciona para el complemento de Android, para el complemento de Android utiliza lo siguiente:

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

Vea lo siguiente: https://.com/a/31665341/3521637


Mi versión minimalista favorita basada en la respuesta de Shubham Chaudhary.

Pon esto en el archivo build.gradle :

test { afterSuite { desc, result -> if (!desc.parent) println("${result.resultType} " + "(${result.testCount} tests, " + "${result.successfulTestCount} successes, " + "${result.failedTestCount} failures, " + "${result.skippedTestCount} skipped)") } }


Puede agregar un cierre Groovy dentro de su archivo build.gradle que hace el registro por usted:

test { afterTest { desc, result -> logger.quiet "Executing test ${desc.name} [${desc.className}] with result: ${result.resultType}" } }

En su consola, entonces se lee así:

:compileJava UP-TO-DATE :compileGroovy :processResources :classes :jar :assemble :compileTestJava :compileTestGroovy :processTestResources :testClasses :test Executing test maturesShouldBeCharged11DollarsForDefaultMovie [movietickets.MovieTicketsTests] with result: SUCCESS Executing test studentsShouldBeCharged8DollarsForDefaultMovie [movietickets.MovieTicketsTests] with result: SUCCESS Executing test seniorsShouldBeCharged6DollarsForDefaultMovie [movietickets.MovieTicketsTests] with result: SUCCESS Executing test childrenShouldBeCharged5DollarsAnd50CentForDefaultMovie [movietickets.MovieTicketsTests] with result: SUCCESS :check :build

Desde la versión 1.1, Gradle admite muchas más opciones para registrar la salida de prueba . Con esas opciones a mano, puede lograr un resultado similar con la siguiente configuración:

test { testLogging { events "passed", "skipped", "failed" } }


Puede ejecutar Gradle con el nivel de registro INFO en la línea de comando. Le mostrará el resultado de cada prueba mientras se están ejecutando. Lo malo es que obtendrá mucho más rendimiento para otras tareas también.

gradle test -i


Descargo de responsabilidad: soy el desarrollador del complemento Gradle Test Logger.

Puede usar el Plugin de Gradle Test Logger para imprimir hermosos registros en la consola.

Uso

plugins { id ''com.adarshr.test-logger'' version ''<version>'' }

Asegúrese de obtener siempre la última versión de Gradle Central .

Configuración

No necesitas ninguna configuración en absoluto. Sin embargo, el complemento ofrece algunas opciones. Esto se puede hacer de la siguiente manera (se muestran los valores predeterminados):

testlogger { // pick a theme - mocha, standard or plain theme ''standard'' // set to false to disable detailed failure logs showExceptions true // set threshold in milliseconds to highlight slow tests slowThreshold 1000 // displays a breakdown of passes, failures and skips along with total duration showSummary true // enable to see standard out and error streams inline with the test results showStandardStreams false }

Espero que disfrutes de usarlo.