Conjuntos de pruebas JUnit 4

98

¿Cómo creo conjuntos de pruebas con JUnit 4?

Toda la documentación que he visto no parece funcionar para mí. Y si utilizo el asistente de Eclipse, no me da la opción de seleccionar ninguna de las clases de prueba que he creado.

Adam Taylor
fuente
4
Con Eclipse 3.7 Indigo, el asistente de la suite de pruebas ahora es compatible con JUnit 4
Fabian Steeg

Respuestas:

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

@RunWith(Suite.class)
@Suite.SuiteClasses({TestClass1.class, TestClass2.class})
public class TestSuite {
  //nothing
}
Joachim Sauer
fuente
61

Puedes crear una suite así. Por ejemplo, una AllTestsuite se vería así.

package my.package.tests;

@RunWith(Suite.class)
@SuiteClasses({
    testMyService.class,
    testMyBackend.class,
    ...
})

public class AllTests {}

Ahora puede ejecutar esto de dos formas diferentes:

  1. haga clic derecho y ejecute en Eclipse como prueba Junit
  2. crear una aplicación Java ejecutable; Clase principal = 'org.junit.runner.JUnitCore' y Args = 'my.package.tests.AllTests'
  3. ejecutar desde la línea de comando:

    $ java -cp build/classes/:/usr/share/java/junit4.jar:/usr/share/java/hamcrest-core.jar org.junit.runner.JUnitCore my.package.tests.AllTests
cmcginty
fuente
Agregaría aún más VoteUps para CMDLine :)
Gruber
9

Creo que TestSuite ha caído en desgracia. Ese podría haber sido el estilo antes de 4.x, pero no lo es ahora que yo sepa.

Solo anoto las pruebas que quiero y luego ejecuto la clase. Se ejecutan todas las pruebas anotadas. Podría usar Ant, pero la mayoría de las veces hago que IntelliJ las ejecute por mí.

duffymo
fuente
11
Podría estar equivocado, pero creo que TestSuite sigue siendo bueno cuando necesitamos especificar el orden de las pruebas, especialmente en las pruebas de integración automatizadas, donde las pruebas de escenarios más pequeños deberían venir antes que escenarios más complejos.
bertie
@duffymo Encuentro su comentario interesante ya que hasta ahora he sido entrenado en la línea de pensamiento anterior a 4.x con respecto a la organización de casos de prueba en suites de prueba
Vatsala
6
Si tiene un mayor número de pruebas, diferentes áreas / módulos funcionales, una distinción entre pruebas "centrales" y pruebas secundarias / auxiliares / más lentas / costosas, por cualquiera de estas razones, estructuraría las pruebas en un TestSuite.
Thomas W
1
Puede usar la @SuiteClassanotación en varias clases y puede anidar Suites dentro de Suites. La línea de pensamiento para organizarlos en 3.x sigue siendo totalmente válida (y debería utilizarse). Puede estructurar todo exactamente de la misma manera que lo hizo antes; simplemente usa la sintaxis de anotación en lugar de TestSuite.suite(). Realmente no hay ningún beneficio al usar TestSuitesobre la anotación y puede aprovechar todas las mejoras de JUnit 4 si usa la anotación equivalente organizativamente.
Thunderforge
3

Estos son los pasos para crear una suite JUnit en eclipse:

  1. En la vista 'Explorador de paquetes' de la perspectiva 'Java' de eclipse, seleccione su (s) prueba (s) unitaria en su paquete, dentro del proyecto eclipse java.
  2. Haga clic con el botón derecho en cualquiera de las pruebas seleccionadas.
  3. En el menú emergente, seleccione Nuevo, Otro ...
  4. Abra la carpeta 'Java', luego abra la carpeta 'JUnit'
  5. Seleccione 'JUnit Test Suite' y luego seleccione el botón 'Siguiente'
  6. Seleccione el botón 'Finalizar'
  7. Resultado: se crea el archivo de la suite 'AllTests.java', con las pruebas incluidas automáticamente
  8. Seleccione el botón Ejecutar en eclipse
  9. Resultado: todas las pruebas de la suite se ejecutan
  10. Ahora puede apuntar a este archivo de suite con ANT, Jenkins u otra herramienta de integración continua de configuración de compilación.

Información de la versión: esto es para eclipse Neon y JUnit 4. También puede seleccionar JUnit 3 antes de seleccionar 'Finalizar' en el paso 6.

Gallo rojo
fuente
¿Podría publicar un archivo build.xml que muestre cómo ejecutar este conjunto de pruebas desde ANT?
LiborStefek
1

De la parte superior de mi cabeza creo un TestSuite e invoco addTests. Si desea que alguna fuente mire, pruebe cualquier lib de código abierto como hibernate o algo de apache y eche un vistazo en el directorio de prueba de la fuente para una suite de pruebas ...

mP.
fuente