es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

La plataforma JUnit 5 Suite no pudo descubrir pruebas.

Tengo un proyecto de POC simple para verificar la funcionalidad del conjunto de pruebas utilizando Junit 5.

Mi pom.xml es:
<build>
<plugins>
<plugin>
<groupid>org.apache.maven.plugins</groupid>
<artifactid>maven-surefire-plugin</artifactid>
<version>3.0.0-M5</version>
</plugin>
</plugins>
</build>



org.junit.jupiter
junit-jupiter
5.8.1
test


org.junit.platform
junit-platform-suite
1.8.1
test

TestSuite.java class is
@Suite
@SuiteDisplayName(“Sample Suite”)
@SelectClasses({TestClassOne.class, TestClassTwo.class})
public class TestSuite {

@BeforeAll
public static void initMethod() {
System.out.println(“Initiating tests from Suite”);
}

@AfterAll
public static void tearDown() {
System.out.println(“Completed Testing”);
}

@Test
public void simpleTest() {
System.out.println(“test method in suite”);
}

}
Running the TestSuite either using mvn test or Run as Junit Test throws an exception
org.junit.platform.commons.JUnitException: TestEngine with ID ‘junit-platform-suite’ failed to discover tests
at org.junit.platform.launcher.core.EngineDiscoveryOrchestrator.discoverEngineRoot(EngineDiscoveryOrchestrator.java:160)
at org.junit.platform.launcher.core.EngineDiscoveryOrchestrator.discoverSafely(EngineDiscoveryOrchestrator.java:134)
at org.junit.platform.launcher.core.EngineDiscoveryOrchestrator.discover(EngineDiscoveryOrchestrator.java:108)
at org.junit.platform.launcher.core.EngineDiscoveryOrchestrator.discover(EngineDiscoveryOrchestrator.java:80)
at org.junit.platform.launcher.core.DefaultLauncher.discover(DefaultLauncher.java:110)
at org.junit.platform.launcher.core.DefaultLauncher.discover(DefaultLauncher.java:78)

¿Qué hay de malo en mi configuración/código? ¿Alguna ayuda/indicaciones para resolver este problema?

Gracias.
¡Feliz Año Nuevo!

Tags:  ,

Answer

  1. Avatar for davy.ai

    El problema parece estar en el uso de la anotación @Suite. En JUnit 5, @Suite ha sido eliminada y en su lugar podemos utilizar @SelectPackages o @SelectClasses para crear un conjunto de pruebas.

    Para resolver este problema, reemplace @Suite con @SelectClasses y modifique su clase TestSuite.java de la siguiente manera:

    import org.junit.jupiter.api.*;
    import org.junit.jupiter.api.DisplayName;
    import org.junit.jupiter.api.Test;
    import org.junit.jupiter.api.TestInstance;
    import org.junit.jupiter.api.TestInstance.Lifecycle;
    
    import java.lang.reflect.Method;
    
    @TestInstance(Lifecycle.PER_CLASS)
    @DisplayName("Muestra Suite")
    @SelectClasses({TestClassOne.class, TestClassTwo.class})
    public class TestSuite {
    
        @BeforeAll
        public void init() {
            System.out.println("Iniciando pruebas desde Suite");
        }
    
        @AfterAll
        public void teardown() {
            System.out.println("Pruebas Completadas");
        }
    
        @Test
        public void simpleTest() {
            System.out.println("Método de prueba en la suite");
        }
    }
    

    Esto debería resolver el problema y permitir que la suite de pruebas se ejecute sin ninguna excepción.

Comments are closed.