test run intellij java intellij-idea junit5

java - run - junit intellij



Integre los resultados de las pruebas JUnit 5 con el informe de prueba Intellij (3)

Cuando ejecuta las pruebas con gradle, obtiene los resultados impresos en la consola como se muestra arriba. Si desea ver los resultados en la ventana del informe de prueba de Idea, puede simplemente ejecutar la prueba dentro del IDE con el nuevo soporte incorporado: https://www.jetbrains.com/idea/whatsnew/#v2016-2-java

Espero que ayude - se refiere a Matthias

Mi build.gradle se configura así:

apply plugin: ''java'' compileTestJava { sourceCompatibility = 1.8 targetCompatibility = 1.8 } repositories { mavenCentral() } dependencies { testCompile("org.junit.jupiter:junit-jupiter-api:5.0.0-M1") testRuntime("org.junit.vintage:junit-vintage-engine:5.0.0-M1") }

y una prueba simple como esta:

public class JUnit5Test { @Test void test() { } }

Cuando ejecuto mi prueba, veo esto en la consola:

Test run finished after 76 ms [ 1 tests found ] [ 0 tests skipped ] [ 1 tests started ] [ 0 tests aborted ] [ 1 tests successful] [ 0 tests failed ] BUILD SUCCESSFUL

Pero no hay nada en el informe de la prueba:

¿Qué hago mal? ¿Cómo puedo integrar los resultados de JUnit 5 en las ventanas del informe de prueba?

Estoy usando Intellij 2016.2


Tal como lo entiendo (y todavía estoy aprendiendo), necesitas usar el corredor basado en JUni4 para ejecutar y ver los resultados en Intellij (src JUnit5 docs ). Para hacer esto, necesitaría habilitar el artefacto junit-platform-runner en su archivo gradle.build. En ese sentido, los ejemplos del archivo gradle.build presentados parecen un poco más complicados que lo que ha presentado.

Finalmente conseguí JUnit5 en Intellij comenzando con el archivo gradle.build que se muestra en el ejemplo de junit5-gradle-consumer , jugando con él, golpeándome la cabeza, etc., hasta que lo puse en funcionamiento. Todavía hay diferencias cuando ejecuto las pruebas en la consola con gradle y las ejecuto en Intellij. Algunas veces, Intellij no identificará una clase de prueba como una prueba, particularmente para las pruebas anidadas. Pero, puedo hacer clic derecho en las clases individuales y ejecutarlas en Intellij.

Debajo está mi truco de un archivo gradle.build que hace que las cosas funcionen en intellij (incluyendo lo que comenté y agregué).

buildscript { repositories { mavenCentral() } dependencies { classpath ''org.junit.platform:junit-platform-gradle-plugin:1.0.0-M2'' } } repositories { mavenCentral() } ext.junit4Version = ''4.12'' ext.junitVintageVersion = ''4.12.0-M2'' ext.junitPlatformVersion = ''1.0.0-M12'' ext.junitJupiterVersion = ''5.0.0-M2'' ext.junitPlatformConsoleVersion = ''1.0.0-M2'' ext.log4JVersion = ''2.5'' apply plugin: ''java'' apply plugin: ''eclipse'' apply plugin: ''idea'' apply plugin: ''org.junit.platform.gradle.plugin'' jar { baseName = ''x2'' version = ''1.0.0-SNAPSHOT'' } compileTestJava { sourceCompatibility = 1.8 targetCompatibility = 1.8 options.compilerArgs += ''-parameters'' } junitPlatform { // platformVersion ''1.0.0-SNAPSHOT'' engines { include ''junit-jupiter'', ''junit-vintage'' // exclude ''custom-engine'' } tags { // include ''fast'' // exclude ''slow'' } // includeClassNamePattern ''.*Test'' // enableStandardTestTask true // reportsDir "build/test-results/junit-platform" // this is the default // logManager ''org.apache.logging.log4j.jul.LogManager'' } dependencies { // JUnit Jupiter API and TestEngine implementation testCompile("org.junit.jupiter:junit-jupiter-api:${junitJupiterVersion}") testRuntime("org.junit.jupiter:junit-jupiter-engine:${junitJupiterVersion}") testCompile("org.junit.platform:junit-platform-console:${junitPlatformConsoleVersion}") testRuntime("org.junit.platform:junit-platform-console:${junitPlatformConsoleVersion}") // added to run via test suite testCompile("org.junit.platform:junit-platform-runner:${junitPlatformConsoleVersion}") testRuntime("org.junit.platform:junit-platform-runner:${junitPlatformConsoleVersion}") // If you also want to support JUnit 3 and JUnit 4 tests //testCompile("junit:junit:${junit4Version}") //testRuntime("org.junit.vintage:junit-vintage-engine:${junitVintageVersion}") // testRuntime("org.apache.logging.log4j:log4j-core:${log4JVersion}") // testRuntime("org.apache.logging.log4j:log4j-jul:${log4JVersion}") } task wrapper(type: Wrapper) { distributionUrl = ''https://services.gradle.org/distributions/gradle-2.14.1-bin.zip'' }

Espero que esto ayude.


A partir de la versión 2016.2, ahora es totalmente compatible . Funciona igual que con los resultados de la prueba junit4: necesitas activar el complemento JUnit (ver en el menú Archivo, Configuración ... elemento, sección Complementos).

No use la ventana de la herramienta Gradle para comenzar su prueba, use las herramientas IDE directamente. Éstas incluyen:

  • Al hacer clic en el ícono de margen (se ve como un círculo verde con un pequeño ícono de "reproducción" superpuesto) y seleccionar "Ejecutar" o "Depurar"
  • Hacer clic con el botón derecho en el nombre de la clase o método y seleccionar "Ejecutar" o "Depurar"
  • Usando el menú "Ejecutar", cualquier elemento del menú con "Ejecutar" o "Depurar"
  • Seleccionando la clase de prueba en el menú desplegable de la barra de herramientas de configuración de ejecución, luego haciendo clic en el ícono verde "Reproducir".

Tenga en cuenta que actualmente, los métodos de @TestFactory no se pueden ejecutar de esta manera. ¡Esto puede ser muy confuso si tienes clases con solo los métodos de @TestFactory ! Puede @Test esto agregando un método @Test ficticio a clases que @TestFactory métodos @TestFactory , luego ejecute la clase como se describe arriba. Los métodos @TestFactory se encuentran correctamente cuando se ejecuta toda la clase.