Cómo ejecutar casos de prueba JUnit desde la línea de comando
Me gustaría ejecutar casos de prueba JUnit desde la línea de comando. ¿Cómo puedo hacer esto?
Para JUnit 5.x es:
java -jar junit-platform-console-standalone-<version>.jar <Options>
Encuentre un breve resumen en https://stackoverflow.com/a/52373592/1431016 y detalles completos en https://junit.org/junit5/docs/current/user-guide/#running-tests-console-launcher
Para JUnit 4.X es realmente:
java -cp .:/usr/share/java/junit.jar org.junit.runner.JUnitCore [test class name]
Pero si está utilizando JUnit 3.X, tenga en cuenta que el nombre de la clase es diferente:
java -cp .:/usr/share/java/junit.jar junit.textui.TestRunner [test class name]
Es posible que necesite agregar más archivos JAR o directorios con sus archivos de clase al classpath y separarlos con punto y coma (Windows) o dos puntos (UNIX/Linux). Depende de tu entorno.
Editar: agregué el directorio actual como ejemplo. Depende de su entorno y de cómo construya su aplicación (puede ser bin/ o build/ o incluso my_application.jar, etc.). Tenga en cuenta que Java 6+ admite globos en classpath, puede hacer:
java -cp lib/*.jar:/usr/share/java/junit.jar ...
¡Escribe pruebas! :-)
manera experta
Si usa Maven, puede ejecutar el siguiente comando para ejecutar todos sus casos de prueba:
mvn clean test
O puede ejecutar una prueba particular como se muestra a continuación
mvn clean test -Dtest=your.package.TestClassName
mvn clean test -Dtest=your.package.TestClassName#particularMethod
Si desea ver el seguimiento de la pila (si corresponde) en la consola en lugar de los archivos de informes en la carpeta target\surefire-reports, establezca la propiedad del usuario surefire.useFile en falso. Por ejemplo:
mvn clean test -Dtest=your.package.TestClassName -Dsurefire.useFile=false
camino gradle
Si usa Gradle, puede ejecutar el siguiente comando para ejecutar todos sus casos de prueba:
gradle test
O puede ejecutar una prueba particular como se muestra a continuación
gradle test --tests your.package.TestClassName
gradle test --tests your.package.TestClassName.particularMethod
Si desea obtener más información, puede considerar opciones como --stacktrace, --info o --debug.
Por ejemplo, cuando ejecuta Gradle con el nivel de registro de información --info, le mostrará el resultado de cada prueba mientras se ejecuta. Si hay alguna excepción, le mostrará el seguimiento de la pila y le indicará cuál es el problema.
gradle test --info
Si desea ver los resultados generales de la prueba, puede abrir el informe en el navegador, por ejemplo (ábralo usando Google Chrome en Ubuntu):
google-chrome build/reports/tests/index.html
Camino de la hormiga
Una vez que haya configurado su archivo de compilación Ant build.xml, puede ejecutar sus casos de prueba JUnit desde la línea de comando como se muestra a continuación:
ant -f build.xml <Your JUnit test target name>
Puede seguir el enlace a continuación para leer más sobre cómo configurar pruebas JUnit en el archivo de compilación Ant: https://ant.apache.org/manual/Tasks/junit.html
manera normal
Si no usas Maven, Gradle o Ant, puedes seguir la siguiente manera:
En primer lugar, debe compilar sus casos de prueba. Por ejemplo (en Linux):
javac -d /absolute/path/for/compiled/classes -cp /absolute/path/to/junit-4.12.jar /absolute/path/to/TestClassName.java
Luego ejecute sus casos de prueba. Por ejemplo:
java -cp /absolute/path/for/compiled/classes:/absolute/path/to/junit-4.12.jar:/absolute/path/to/hamcrest-core-1.3.jar org.junit.runner.JUnitCore your.package.TestClassName
La respuesta que dio @lzap es una buena solución. Sin embargo, me gustaría agregar que usted debería agregar. a la ruta de clase, para que su directorio actual no quede fuera, lo que provocará que sus propias clases queden fuera. Esto me ha pasado en algunas plataformas. Entonces una versión actualizada para JUnit 4.x sería:
java -cp .:/usr/share/java/junit.jar org.junit.runner.JUnitCore [test class name]
Asegúrese de que JUnit.jar esté en su classpath, luego invoque el ejecutor de línea de comando desde la consola
java org.junit.runner.JUnitCore [nombre de clase de prueba]
Referencia: preguntas frecuentes de junit
Con JUnit 4.12 lo siguiente no funcionó para mí:
java -cp .:/usr/share/java/junit.jar org.junit.runner.JUnitCore [test class name]
Aparentemente , desde JUnit 4.11 en adelante también deberías incluir hamcrest-core.jar
en tu classpath:
java -cp .:/usr/share/java/junit.jar:/usr/share/java/hamcrest-core.jar org.junit.runner.JUnitCore [test class name]