2008-10-10 15 views
5

He realizado algunas pruebas unitarias (en la clase de prueba). El tutorial que he leído decía que debería hacer una TestSuite para los unittest.JUnit y junit.framework.TestSuite - No hay métodos ejecutables

Es extraño que cuando estoy ejecutando la prueba unitaria directamente (seleccionando la clase de prueba - Ejecutar como prueba jUnit) todo está funcionando bien, aunque cuando intento lo mismo con el conjunto de pruebas siempre hay una excepción: java.lang.Exception: no hay métodos ejecutables.

Este es el código del banco de pruebas:

import junit.framework.Test; 
import junit.framework.TestSuite; 

public class AllTests { 

public static Test suite() { 
    TestSuite suite = new TestSuite("Test suite for com.xxx.yyyy.test"); 
    //$JUnit-BEGIN$ 
    suite.addTestSuite(TestCase.class); 
    //$JUnit-END$ 
    return suite; 
    } 

} 

Cualquier idea por qué esto no está funcionando?

Respuesta

5

No tengo experiencia en hormiga, así que no lo estoy usando para probarlo ahora mismo.

Al buscar en Internet parece que estoy mezclando el antiguo comportamiento de jUnit 3.8 y jUnit 4.0. Tratando ahora una manera de utilizar el "nuevo comportamiento"

editado:
ahora funciona:

AllTest cambiado a:

import org.junit.runner.RunWith; 
import org.junit.runners.Suite; 
import org.junit.runners.Suite.SuiteClasses; 


@RunWith(value=Suite.class) 
@SuiteClasses(value={TestCase.class}) 
public class AllTests { 

} 

TestCase cambiado a:

import static org.junit.Assert.assertTrue; 
import org.junit.Test; 

public class TestCase { 
@Test 
    public void test1 { 
     assertTrue (tmp.getTermin().equals(soll)); 
    } 
} 
+0

Hola, hago lo mismo pero obtengo el error "no hay métodos ejecutables" – secret

0

Por supuesto, no funcionará ya que no le está diciendo al grupo de pruebas cuáles son sus clases de prueba.

Pero me pregunto por qué no está utilizando la "manera clásica" para construir suites de prueba, que es una hormiga que usa las tareas de jUnit.

2

Me tomó un poco demasiado como para resolverlo, pero creo que esto resuelve tu problema:

Estás haciendo un suite.addTestSuite (TestCase.class), mientras que deberías haber hecho un suite.addTest (TestCase.class).

También puede agregar una suite de pruebas a una suite de pruebas para crear una jerarquía completa de conjuntos de pruebas. En ese caso, deberá usar suite.addTest(). Pero tenga en cuenta que luego usa .suite() y no .class: suite.addTest (MyTestSuite. suite())!

0

Tenga cuidado al utilizar el código IDE completado para agregar la importación para @Test. Tiene que ser import org.junit.Test y noimport org.testng.annotations.Test, por ejemplo. Si haces esto último, obtendrás el error "no hay métodos ejecutables". (¡Estaba usando Intellij Idea 2017 que importó org.junit.jupiter.api.Test en su lugar!)

Cuestiones relacionadas