Estoy tratando de encontrar un enfoque que me permita ejecutar una sola prueba desde una clase JUnit usando solo la línea de comandos y java.
Puedo ejecutar todo el conjunto de pruebas de la clase usando lo siguiente:
java -cp .... org.junit.runner.JUnitCore org.package.classname
Lo que realmente quiero hacer es algo como esto:
java -cp .... org.junit.runner.JUnitCore org.package.classname.method
o:
java -cp .... org.junit.runner.JUnitCore org.package.classname#method
Noté que podría haber formas de hacer esto usando anotaciones JUnit, pero preferiría no modificar la fuente de mis clases de prueba a mano (intentando automatizar esto). También vi que Maven podría tener una forma de hacer esto, pero si es posible, me gustaría evitar depender de Maven.
Entonces me pregunto si hay alguna forma de hacer esto.
Puntos clave que estoy buscando:
- Capacidad para ejecutar una sola prueba desde una clase de prueba JUnit
- Línea de comando (usando JUnit)
- Evite modificar la fuente de prueba
- Evite el uso de herramientas adicionales
java
unit-testing
command-line
junit
Kevin Jalbert
fuente
fuente
Respuestas:
Puedes hacer un corredor JUnit barebones personalizado con bastante facilidad. Aquí hay uno que ejecutará un solo método de prueba en el formulario
com.package.TestClass#methodName
:Puedes invocarlo así:
Después de un vistazo rápido a la fuente de JUnit, llegué a la misma conclusión que tú de que JUnit no es compatible con esto de forma nativa. Esto nunca ha sido un problema para mí, ya que todos los IDE tienen integraciones personalizadas de JUnit que le permiten ejecutar el método de prueba debajo del cursor, entre otras acciones. Nunca he ejecutado pruebas JUnit directamente desde la línea de comandos; Siempre he dejado que el IDE o la herramienta de compilación (Ant, Maven) se encargue de ello. Especialmente porque el punto de entrada CLI predeterminado (JUnitCore) no produce ningún resultado que no sea un código de salida distinto de cero en los fallos de prueba.
NOTA: para la versión JUnit> = 4.9 necesita la biblioteca hamcrest en classpath
fuente
Utilizo Maven para construir mi proyecto y uso el complemento SureFire maven para ejecutar pruebas junit. Siempre que tenga esta configuración, puede hacer:
En este ejemplo, simplemente ejecutamos un método de prueba llamado "testMethod" dentro de la clase "GreatTestClass".
Para obtener más detalles, consulte http://maven.apache.org/surefire/maven-surefire-plugin/examples/single-test.html
fuente
Usamos IntelliJ y pasamos bastante tiempo tratando de resolverlo también.
Básicamente, consta de 2 pasos:
Paso 1: compile la clase de prueba
% javac -cp .:"/Applications/IntelliJ IDEA 13 CE.app/Contents/lib/*" SetTest.java
Paso 2: ejecutar la prueba
% java -cp .:"/Applications/IntelliJ IDEA 13 CE.app/Contents/lib/*" org.junit.runner.JUnitCore SetTest
fuente