Eclipse No se encontraron pruebas con JUnit 5 causadas por NoClassDefFoundError para LauncherFactory

94

El problema

Siempre que ejecuto la prueba JUnit de mis proyectos (usando JUnit 5 con Java 9 y Eclipse Oxygen 1.a) me encuentro con el problema de que eclipse no puede encontrar ninguna prueba.

La descripción

Bajo la configuración de ejecución, eclipse ni siquiera puede encontrar el método que está anotado con @Test, sino que solo me muestra " (todos los métodos) ". Con suerte, la siguiente imagen ofrece una mejor visión de mi configuración:

https://imgur.com/a/FTe9c

Salida de consola:

java.lang.NoClassDefFoundError: org/junit/platform/launcher/core/LauncherFactory
    at org.eclipse.jdt.internal.junit5.runner.JUnit5TestLoader.<init>(JUnit5TestLoader.java:31)
    at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
    at java.base/jdk.internal.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)
    at java.base/jdk.internal.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source)
    at java.base/java.lang.reflect.Constructor.newInstance(Unknown Source)
    at java.base/java.lang.Class.newInstance(Unknown Source)
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.createRawTestLoader(RemoteTestRunner.java:368)
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.createLoader(RemoteTestRunner.java:363)
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.defaultInit(RemoteTestRunner.java:307)
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.init(RemoteTestRunner.java:222)
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:206)
Caused by: java.lang.ClassNotFoundException: org.junit.platform.launcher.core.LauncherFactory
    at java.base/jdk.internal.loader.BuiltinClassLoader.loadClass(Unknown Source)
    at java.base/jdk.internal.loader.ClassLoaders$AppClassLoader.loadClass(Unknown Source)
    at java.base/java.lang.ClassLoader.loadClass(Unknown Source)
    ... 11 more

Lo que intenté hasta ahora

Ya lo intenté

  • para eliminar la carpeta de prueba de la ruta de compilación y agregarla nuevamente.
  • para comenzar la prueba colocando el cursor sobre el método anotado con @Test y luego haga clic en "Ejecutar como prueba JUnit".
  • eliminar JUnit de Buildpath y agregarlo nuevamente
  • reiniciar eclipse
  • También moví el proyecto completo de una máquina a otra y lo probé con la instalación de eclipse provista allí
  • para cambiar el nombre del método de prueba.
  • para volver a escribir la anotación @Test

Algunos de estos pasos se pueden encontrar aquí , pero al final el problema persistió.

Dragon sombra
fuente
Pero, ¿trató de averiguar la diferencia como se indica en la respuesta a esto - stackoverflow.com/questions/34413/… ?
Naman

Respuestas:

20

Se encontró con el error de Eclipse 525948 que ya se ha corregido y que se publicará en la próxima versión Oxygen.3 (4.7.3), 21 de marzo de 2018.

Como solución alternativa, coloque su código de prueba en un proyecto separado y agregue el proyecto bajo prueba a la ruta del módulo, pero no agregue module-info.javaa su proyecto de prueba. Con el nombre de su proyecto, clase y módulo, debería verse así:

ingrese la descripción de la imagen aquí

Vea también mi video que muestra Java 9 y JUnit 5 en Eclipse Oxygen.1a en acción

aullador
fuente
1
@nullpointer Me refiero a crear un nuevo proyecto Java que no sea modular (no tiene module-info.java). En Eclipse, un proyecto Java tiene una única carpeta de salida y, por lo tanto, solo puede contener una o ninguna module-info.java. Pero puede agregar módulos a la ruta de módulo del proyecto aunque el proyecto no sea modular (no tiene module-info.java).
Howlger
1
@ShadowDragon el inconveniente de este truco es que necesitamos un nombre de paquete diferente para las clases de prueba, por lo que no podemos hacer pruebas privadas de paquetes
kleopatra
7
Acabo de instalar Oxygen.3 (4.7.3) y el problema persiste.
user118967
2
@chomp Si tiene 2018-09, es un problema diferente incluso si los síntomas parecen similares. Si no se encontraron pruebas, esto se debe principalmente a una ruta de clase / módulo incorrecta ( Proyecto> Propiedades: Ruta de compilación de Java ).
aullador
2
@howlger Gracias. Después de actualizar a la última versión, este problema desapareció. De nuevo, gracias por tu ayuda :).
Datta
121

Solucioné el problema haciendo clic con el botón derecho en la prueba y seleccionando 'Ejecutar configuraciones' y cambiando la selección "Ejecutor de prueba:" a 'JUnit 4' como se muestra aquí:

Captura de pantalla de las configuraciones de ejecución

Ejecuté la prueba de nuevo y funcionó.

vector de cuerda
fuente
12
Es curioso que seleccionar "JUnit4" en configuraciones de ejecución mientras se usa JUnit5. No llamaré a eso una buena solución en la que pueda confiar mientras estoy lidiando con un gran proyecto.
Levent Divilioglu
1
También encuentro esta solución sospechosa, incluso carece de una explicación de por qué funciona y qué riesgos se pueden correr.
Amadán
Si hacer esto no resolvió el problema, vaya a la pestaña classpath en la misma ventana y agregue JUnit a las bibliotecas Bootstrap.
Abhi
Gracias; la selección de JUnit 4 resolvió mis problemas. Por ahora, es la forma más sencilla de resolver el problema.
Tes
En mi opinión esta solución menos invasiva, es decir, sin modificar el código fuente.
Rafael Rocha
63

Tengo el mismo problema con STS 3.9.1. Parece un error de Eclipse, sin embargo, para solucionarlo, puede agregar una dependencia de prueba junit-platform-launchera su proyecto ( https://mvnrepository.com/artifact/org.junit.platform/junit-platform-launcher )

Así es como lo hice para mi proyecto que usa gradle:

dependencies {
    // other stuff here

    testCompile group: 'org.junit.jupiter', name: 'junit-jupiter-engine', version: "5.${junit5MinorVersion}"
    testCompile group: 'org.junit.platform', name: 'junit-platform-launcher', version: "1.${junit5MinorVersion}"
}

archivo gradle.properties:

junit5MinorVersion=1.0

Creo que lo mismo se aplica si ve esta excepción mientras usa IntelliJ IDEA.

Andrii Karaivanskyi
fuente
1
Si usa gradle, generalmente va a build.gradle. Si está utilizando maven, es pom.xml. Sin embargo, el formato de maven es diferente.
Andrii Karaivanskyi
1
Eso me lo arregló. ¡Gracias!
Chris
4
Aquí está el fragmento pom.xml para ir dentro de <dependencies>: <dependency> <groupId> org.junit.jupiter </groupId> <artifactId> junit-jupiter-engine </artifactId> <version> 5.1.0 </version> <scope> prueba </scope> </dependency> <dependency> <groupId> org.junit.platform </groupId> <artifactId> junit-platform-launcher </artifactId> <version> 1.1.0 </version> < alcance> prueba </scope> </dependency>
user118967
1
Todavía agregar junit-platform 1.1.0 no funcionó para mí. Muestra el mismo mensaje "No se encontraron pruebas con el corredor de pruebas usando JUnit 5" "
P Satish Patro
2
@PSatishPatro Después de agregar lo anterior. Debe ir a ejecutar la configuración para ese caso de prueba de Junit y luego ir a la pestaña Classpath-> Avanzado-> Agregar biblioteca-> Aceptar-> Junit-> Finalizar. Entonces adelante y Ejecutarlo Esto agregará la biblioteca durante la ejecución de Junit
Jaison Varghese
26

En mi caso, el problema era yo mismo y ningún IDE como Eclipse. He importado la clase de prueba JUnit 4.

Así que NO importe este:

import org.junit.Test  // JUnit 4

Pero importa ese:

import org.junit.jupiter.api.Test // JUnit 5
armin.miedl
fuente
Estaba cambiando entre JUnit 4 y 5 porque el proyecto actual usa JUnit 5, pero cuando reporto errores a Hibernate, etc. Necesito cambiar a JUnit 4. Terminé mezclando accidentalmente las importaciones. 🤦‍♂️
Kawu
20

Hasta ahora, las respuestas no abordaron el problema de compartir código con otras personas que no necesariamente usan Eclipse. He aquí una proposición. La clave es utilizar un perfil experto para resolver el caso Eclipse.

Se asume que ha definido una propiedad junit5.versionen su pom como:

<properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <junit5.version>5.1.1</junit5.version>
</properties>

luego en la profilessección agregue lo siguiente:

<profiles>
    <profile>
        <id>eclipse</id>
        <dependencies>
            <dependency>
                <groupId>org.junit.jupiter</groupId>
                <artifactId>junit-jupiter-engine</artifactId>
            </dependency>
            <dependency>
                <groupId>org.junit.platform</groupId>
                <artifactId>junit-platform-launcher</artifactId>
            </dependency>
        </dependencies>
        <dependencyManagement>
            <dependencies>
                <dependency>
                    <groupId>org.junit.jupiter</groupId>
                    <artifactId>junit-jupiter-engine</artifactId>
                    <version>${junit5.version}</version>
                    <scope>test</scope>
                </dependency>
                <dependency>
                    <groupId>org.junit.platform</groupId>
                    <artifactId>junit-platform-launcher</artifactId>
                    <version>1.1.1</version>
                    <scope>test</scope>
                </dependency>
            </dependencies>
        </dependencyManagement>
    </profile>
</profiles>

Todo lo que tiene que hacer después de esto es seleccionar el perfil en su Eclipse local: Haga clic derecho en su proyecto y seleccione Maven > Select Maven Profiles...(o presione Ctrl+ Alt+ P), y luego verifique el perfil "eclipse" que acabamos de crear.

Selección del perfil de Maven

Con eso has terminado. Su Eclipse ejecutará las pruebas de Junit 5 como se esperaba, pero la configuración que agregó no contaminará otras compilaciones u otro IDE

Aldian
fuente
12

Agregar esta dependencia maven con JUnit Jupiter (v.5.5.1) resuelve el problema.

<dependency>
    <groupId>org.junit.platform</groupId>
    <artifactId>junit-platform-launcher</artifactId>
    <version>1.5.1</version>
    <scope>test</scope>
</dependency>
hbhattac
fuente
Tenía un proyecto JAR creado para Spring Boot 2.x que trajo JUnit 5. Agregué esta dependencia y parece haberla solucionado. ¡Gracias!
David Bradley
12

SOLUCIÓN SIMPLE: (Agregar biblioteca JUnit 5)

INSTRUCCIONES:

  • Haga clic derecho en el proyecto -> Ruta de construcción -> Configurar ruta de construcción
  • En la ventana emergente -> Agregar biblioteca -> JUnit -> JUnit 5 -> Finalizar -> Aplicar
  • Debería ver la biblioteca JUnit 5 (y sus frascos) agregada a su proyecto
  • Haga clic derecho en el proyecto -> Maven -> Actualizar proyecto -> Aceptar
Jerry Carney
fuente
9

Ninguna de las soluciones ayudó:

El problema es que Eclipse 2018-12 tiene soporte para JUnit 5.3.1. Si lo inicia con una versión anterior, fallará.

Así que asegúrese de utilizar al menos 5.3.1.

5.4.0 también funciona.

En caso de que su pom principal sea Spring Boot, debe asegurarse (en la administración de dependencias) de que junit-jupiter-api esté configurado en la misma versión. ¡No necesitas junit-platform-runner o -launcher !

T3rm1
fuente
2
Gracias por el consejo. Estoy usando 2019-3 y agregué una propiedad <junit-jupiter.version>5.4.1</junit-jupiter.version>para anular la versión utilizada en Spring boot (2.1.3.RELEASE).
Ritesh
3
Este fue el que me lo arregló. Eliminé la dependencia -launcher y comenzó a funcionar. (eclipse 2019-09 y junio 5.4.2)
Raymond
Esta solución también funciona para mí. Sin embargo, en mi caso, cambié de 5.3.1 a 5.5.1 y el junit-platform-engine a 1.5.1.
Arwan Khoiruddin
1
Esto me lo arregló. En eclipse 2020-03, las pruebas no comenzaron con la versión 5.5.2 de junit sino con la 5.6.0. Como actualización general para su respuesta: podría ser necesario usar al menos la versión junit que usa eclipse.
Lars Briem
8

Siguiendo la respuesta de Andrii Karaivanskyi, aquí está la declaración de Maven POM:

<properties>
    ...
    <junit-jupiter.version>5.2.0</junit-jupiter.version>
    <junit-platform.version>1.2.0</junit-platform.version>
    ...
</properties>

<dependencies>
    ...
    <dependency>
        <groupId>org.junit.jupiter</groupId>
        <artifactId>junit-jupiter-engine</artifactId>
        <version>${junit-jupiter.version}</version>
        <scope>test</scope>
    </dependency>
    <dependency>
        <groupId>org.junit.platform</groupId>
        <artifactId>junit-platform-launcher</artifactId>
        <version>${junit-platform.version}</version>
        <scope>test</scope>
    </dependency>
    ...
</dependencies>

ACTUALIZAR

Según el comentario de Alexander Wessel , puede usar org.junit: junit-bom como se describe en su respuesta a la pregunta Eclipse. No se encontraron pruebas con JUnit 5 causadas por NoClassDefFoundError para LauncherFactory .

Gerold Broser
fuente
1
No declare propiedades para las versiones de plataforma y júpiter, use la lista de materiales en su lugar . Básicamente, agregue una dependencia en la lista de materiales en la etiqueta dependencyManagement con scope=import type=pom, luego agregue dependencias a junit-platform-launcher y junit-jupiter-engine en el alcance de la prueba, sin dar una versión en la sección de dependencias. La lista de materiales siempre se asegurará de que tenga solo una versión de JUnit Platform y Jupiter en classpath, y que las versiones respectivas sean las previstas (por ejemplo, 5.2.0 con 1.2.0).
Alexander Wessel
@AlexanderWessel No tengo lista de materiales. Este es solo un extracto de ejemplo de las dependencias que se deben declarar con Maven, donde sea que sea.
Gerold Broser
1
no es si usted tiene (o más bien su proyecto tiene) una lista de materiales en sí. Estaba explicando que al importar la lista de materiales que proporciona JUnit 5 , puede asegurarse de que las versiones de Junit Jupiter y Junit Platform sean compatibles, y no necesitará declarar una versión en las dependencias individuales, por lo que ya no tendrá que declarar la versión. propiedades. Para que quede claro: Su ejemplo hace bien el trabajo. Pero la importación de JUnit BOM es un poco más elegante (en mi humilde opinión) y, en algunas circunstancias, más segura.
Alexander Wessel
7

Para su información, otra causa de "No se encontraron pruebas con junit5" es (inadvertidamente o intencionalmente) declarar los casos de prueba "privados":

// Example of test case that doesn't get included
@Test
private void testSomeMethod() {
}

Necesitan ser públicos.

Mike B
fuente
5

También enfrenté el mismo problema, solo necesita agregar la biblioteca, la biblioteca Junit ya se proporciona junto con Eclipse, por lo que solo debe seguir a continuación

Ruta de compilación> Configurar ruta de compilación> biblioteca> Agregar biblioteca> JUnit> Siguiente> finalizar

Esto funciona para mi

Alok Ranjan
fuente
Funcionó bien en eclipse. Versión: 2020-06 (4.16.0) Id. De compilación: 20200615-1200
OJVM
4

Desde el principio, el mensaje de error le dice que la clase no se encuentra: NoClassDefFoundErroreso significa que el PATH a junit es el problema.

  1. Presione clic derecho en la carpeta del proyecto y elija Propiedades O seleccione la carpeta del proyecto y presione la combinación cmd + i.

  2. seleccione de la lista "Java Build Path".

  3. seleccione la pestaña "Bibliotecas"
  4. Si se agrega JUnit 5 (o JUnit 4) a "Modulepath", seleccione "JUnit 5" y presione Eliminar.
  5. seleccione "Classpath", presione "Agregar biblioteca ...".
  6. desde la ventana abierta "Agregar biblioteca", seleccione JUnit, presione siguiente.
  7. Seleccione la versión de la biblioteca JUnit que necesita y presione Finalizar.

Eso es todo. Intente ejecutar la prueba de nuevo.

Ion Timotin
fuente
4

deberías saber eso :

@Before de junit4 va con @Test: " import org.junit.Test "

Y

@BeforeEach de Junit5 va con: " import org.junit.jupiter.api.Test "

así que asegúrese de que está utilizando las importaciones de la misma versión de Junit, de lo contrario, supongo que no funcionará.

Y.halaoui
fuente
3

Usando STS 3.9.1 tengo el mismo problema. Sin embargo, actualmente no necesito ninguna característica nueva de JUnit5, así que intenté forzar el uso de una versión anterior. Si usa maven, puede agregar las siguientes dependencias a su pom.xml:

<dependency>
    <groupId>org.junit.platform</groupId>
    <artifactId>junit-platform-launcher</artifactId>
    <version>${junit.platform.version}</version>
    <scope>test</scope>
</dependency>

<dependency>
    <groupId>org.junit.jupiter</groupId>
    <artifactId>junit-jupiter-engine</artifactId>
    <version>${junit.jupiter.version}</version>
    <scope>test</scope>
</dependency>

<dependency>
    <groupId>org.junit.vintage</groupId>
    <artifactId>junit-vintage-engine</artifactId>
    <version>${junit.vintage.version}</version>
    <scope>test</scope>
</dependency>

Esto funcionó para mí (al menos siempre que no necesite JUnit5 explícitamente).

mahe
fuente
¿Por qué agregó "org.junit.vintage" si está utilizando JUnit5? Es solo para compatibilidad con versiones anteriores (como usar JUnit antiguo) AFAIK.
Levent Divilioglu
Porque con ese proyecto y STS 3.9.1 no pude / no usé JUnit5 sino JUnit4.
mahe
3

Tuve el mismo problema después de crear un nuevo TestCase: Eclipse -> New -> JUnit Test Case. Crea una clase sin modificador de nivel de acceso. Podría resolver el problema simplemente poniendo un público antes de la palabra clave de clase .

du-it
fuente
Tanto la clase como el método requieren una palabra clave pública. junit.org/junit4/javadoc/4.12/org/junit/Test.html
hmehandi
3

Como todos informaron que es un error IDE, probé Eclipsey STS. En ambos casos, está fallando.

Como solución alternativa, lo arreglé modificando el archivo pom.xml como se muestra a continuación.

He agregado estas dos dependencias maven junit-jupiter-enginey junit-platform-launcher.

pom.xml

<!-- https://mvnrepository.com/artifact/org.junit.jupiter/junit-jupiter-engine -->
    <dependency>
        <groupId>org.junit.jupiter</groupId>
        <artifactId>junit-jupiter-engine</artifactId>
        <version>${junit-jupiter.version}</version>
        <scope>test</scope>
    </dependency>

    <!-- https://mvnrepository.com/artifact/org.junit.platform/junit-platform launcher -->
    <dependency>
        <groupId>org.junit.platform</groupId>
        <artifactId>junit-platform-launcher</artifactId>
        <version>${junit-platform.version}</version>
        <scope>test</scope>
    </dependency>
</dependencies>

Además, asegúrese de agregar la versión de ambas dependencias de maven en la etiqueta de propiedades.

<properties>
    <java.version>1.8</java.version>
    <junit-jupiter.version>5.2.0</junit-jupiter.version>
    <junit-platform.version>1.2.0</junit-platform.version>
</properties>
Arvind Katte
fuente
1
Agregar la dependencia junit-platform-launcher resolvió el problema por mí. Gracias
Venkatesh Manohar
3

Estoy usando eclipse 2019-09.

Tuve que actualizar la versión junit-bom al menos a 5.4.0. Anteriormente tenía 5.3.1 y eso causó los mismos síntomas del OP.

Mi configuración es ahora:

    <dependencyManagement>
        <dependencies>
            <dependency>
                <groupId>org.junit</groupId>
                <artifactId>junit-bom</artifactId>
                <version>5.5.2</version>
                <type>pom</type>
                <scope>import</scope>
            </dependency>
        </dependencies>
    </dependencyManagement>
Bulto
fuente
otra opción es agregar <junit-jupiter.version> 5.4.0 </junit-jupiter.version> a las propiedades de pom
Uri Loya
2

Dado que no es posible publicar bloques de código en comentarios, aquí está la plantilla POM que estoy usando en proyectos que requieren JUnit 5. Esto permite construir y "Ejecutar como JUnit Test" en Eclipse y construir el proyecto con Maven simple.

<project
    xmlns="http://maven.apache.org/POM/4.0.0"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
    xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
    <modelVersion>4.0.0</modelVersion>

    <groupId>group</groupId>
    <artifactId>project</artifactId>
    <version>0.0.1-SNAPSHOT</version>
    <name>project name</name>

    <dependencyManagement>
      <dependencies>
        <dependency>
        <groupId>org.junit</groupId>
        <artifactId>junit-bom</artifactId>
        <version>5.3.1</version>
        <type>pom</type>
        <scope>import</scope>
        </dependency>
      </dependencies>
    </dependencyManagement>

    <dependencies>
      <dependency>
        <groupId>org.junit.jupiter</groupId>
        <artifactId>junit-jupiter-engine</artifactId>
        <scope>test</scope>
      </dependency>

      <dependency>
        <groupId>org.junit.platform</groupId>
        <artifactId>junit-platform-launcher</artifactId>
        <scope>test</scope>
      </dependency>

      <dependency>
        <!-- only required when using parameterized tests -->
        <groupId>org.junit.jupiter</groupId>
        <artifactId>junit-jupiter-params</artifactId>
        <scope>test</scope>
      </dependency>
    </dependencies>
</project>

Puede ver que ahora solo tiene que actualizar la versión en un lugar si desea actualizar JUnit. Además, el número de versión de la plataforma no necesita aparecer (en una versión compatible) en ningún lugar de su POM, se administra automáticamente a través de la junit-bomimportación.

Alexander Wessel
fuente
2

Estoy usando:

Spring Tool Suite 4 Versión: 4.4.2.RELEASE ID de compilación: 201911201053 Versión de Java: 1.8.0_191

y el mensaje que se muestra es No se encontraron pruebas con el corredor de pruebas 'JUnit5'

lo que funcionó para mí fue la configuración a continuación

    <properties>
        <java.version>1.8</java.version>
        <junit-jupiter.version>5.5.2</junit-jupiter.version>
        <junit-platform.version>1.5.2</junit-platform.version>
    </properties> 

    <dependency>
        <groupId>org.junit.jupiter</groupId>
        <artifactId>junit-jupiter-engine</artifactId>
        <version>${junit-jupiter.version}</version>
        <scope>test</scope>
    </dependency>
    <dependency>
        <groupId>org.junit.platform</groupId>
        <artifactId>junit-platform-launcher</artifactId>
        <version>${junit-platform.version}</version>
        <scope>test</scope>
    </dependency>
ukaliko
fuente
2

Falta el lanzador de la plataforma JUnit 5 con el grupo: 'org.junit.platform', nombre: 'junit-platform-launcher'

Simplemente agregue su POM:

<dependency>
       <groupId>org.junit.platform</groupId>
       <artifactId>junit-platform-launcher</artifactId>
    </dependency>
Ravi Ranjan
fuente
1

El mismo error que enfrenté en la versión de eclipse Oxygen.3a Release (4.7.3a). Hay un problema en la falta de coincidencia de las dependencias de Maven. Para resolver, he actualizado mi Pom.xml con las siguientes dependencias.

http://maven.apache.org/xsd/maven-4.0.0.xsd "> 4.0.0 com.netapp.junitnmactiopractice JunitAndMactioPractice 0.0.1-SNAPSHOT

<properties>
    <project.build.sourceEncoding>UTF-8</project.build.sourceEncoding>
    <java.version>1.8</java.version>
    <junit.jupiter.version>5.1.1</junit.jupiter.version>
    <junit.platform.version>1.1.1</junit.platform.version>
</properties>

<build>
    <plugins>
        <plugin>
            <artifactId>maven-compiler-plugin</artifactId>
            <version>3.1</version>
            <configuration>
                <source>${java.version}</source>
                <target>${java.version}</target>
            </configuration>
        </plugin>
    </plugins>
</build>

<dependencies>
    <dependency>
        <groupId>org.junit.jupiter</groupId>
        <artifactId>junit-jupiter-engine</artifactId>
        <version>${junit.jupiter.version}</version>
    </dependency>
    <dependency>
        <groupId>org.junit.platform</groupId>
        <artifactId>junit-platform-runner</artifactId>
        <version>${junit.platform.version}</version>
        <scope>test</scope>
    </dependency>
</dependencies>

Harpreet Singh
fuente
¿Ha visto la Guía del usuario de JUnit 5 sobre junit-platform-runner: " Ejecutor para ejecutar pruebas y conjuntos de pruebas en la plataforma JUnit en un entorno JUnit 4 "?
Gerold Broser
1

Sólo se puede utilizar junit-jupitercomo una dependencia prueba en lugar de junit-jupiter-api, junit-platform-launcher, junit-jupiter-engine.

<dependency>
    <groupId>org.junit.jupiter</groupId>
    <artifactId>junit-jupiter</artifactId>
    <version>5.5.2</version>
    <scope>test</scope>
</dependency>
aly
fuente
1
Esta solución me funcionó con JUnit 5.6.2, Java 11 (y eclipse 2020-03 / 4.15.0)
coseos
1

Para mí, configuré la ruta de compilación para agregar la biblioteca JUnit 5 y también agregando la dependencia

     <dependency> 
        <groupId>org.junit.platform</groupId> 
        <artifactId>junit-platform-launcher</artifactId> 
        <version>1.1.0</version> 
        <scope>test</scope> 
     </dependency>

por separado.

Dineshotham Kumar Khambhammett
fuente
1

También enfrenté este problema con Eclipse (Versión: 2019-12 (4.14.0)). La solución parece usar IntelliJ o usar la prueba de Maven para ejecutar tales pruebas en Eclipse.

Srini Ramjee
fuente
1

En realidad, utilicé spring-tool-suite-4-4.5.1 y tuve este error cuando quería ejecutar una clase de prueba. y la solución fue agregar a 'java build path', 'junit5' en Bibliotecas java build path img

fatima fahmi
fuente
0

deberías cambiar

@Test
public static void testmethod(){}

a

@Test
public void testmethod(){}

el @Test no admite el método estático

Aegon
fuente
0

Me encontré con el mismo error y, en mi caso, fue una simple cuestión de ir Project Properties > Maven > Update projecty / o limpiar y reconstruir el proyecto.

Luke Hutchison
fuente
0

Acabo de agregar mi Test.class a través del menú de eclipse y funcionó. Haga clic derecho para proyectar -> Nuevo -> Otro -> JUnit -> Caso de prueba JUnit

Sou Lee
fuente
0

Puede ser causado por la versión de junit-platform-launcher / junit-platform-runner.

1.1.0 no funciona

1.4.1 funciona en mi configuración.

Creo que esto es un error en eclipse, ya que funciona con bibliotecas de versiones superiores de junit y no con otra versión.

Esto resolvió mi problema. La otra resolución me pareció menos factible o arriesgada. Gracias.

Swarup Das
fuente
0

Cuando cambio mi versión de la api de jupiter a la última, se resolvió. Mientras tanto, mi eclipse y otras extensiones de eclipse ide (como STS) están obteniendo un error de ruta de compilación. Para cada actualización de maven, ide me obliga a configurar la biblioteca del sistema JRE.

Ömer
fuente