Me gustaría ejecutar casos de prueba JUnit desde la línea de comandos. ¿Cómo puedo hacer esto?
javac -cp "junit-4.12.jar; hamcrest-core-1.3.jar;." Tests.java
trabajó para mi. Tenga en cuenta el punto final: ¡es importante!
Me gustaría ejecutar casos de prueba JUnit desde la línea de comandos. ¿Cómo puedo hacer esto?
javac -cp "junit-4.12.jar; hamcrest-core-1.3.jar;." Tests.java
trabajó para mi. Tenga en cuenta el punto final: ¡es importante!
Respuestas:
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 deba agregar más 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: he agregado 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 globs en classpath, puede hacer:
java -cp lib/*.jar:/usr/share/java/junit.jar ...
Espero eso ayude. Escribir pruebas! :-)
Camino Maven
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 informe en la carpeta target \ surefire-reports, establezca la propiedad del usuario surefire.useFile en false. Por ejemplo:
mvn clean test -Dtest=your.package.TestClassName -Dsurefire.useFile=false
Camino de 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, o --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 está ejecutando. Si hay alguna excepción, le mostrará el seguimiento de la pila, señalando 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 con Google Chrome en Ubuntu):
google-chrome build/reports/tests/index.html
Camino hormiga
Una vez que configure su archivo de compilación Ant build.xml, puede ejecutar sus casos de prueba JUnit desde la línea de comandos como se muestra a continuación:
ant -f build.xml <Your JUnit test target name>
Puede seguir el siguiente enlace para leer más sobre cómo configurar las pruebas JUnit en el archivo de compilación Ant: https://ant.apache.org/manual/Tasks/junit.html
Manera normal
Si no usa Maven, Gradle o Ant, puede 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 ejecuta tus 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 debe agregar. a la ruta de clase, para que su directorio actual no se quede fuera, lo que da como resultado que sus propias clases se 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 corredor de línea de comando desde la consola
java org.junit.runner.JUnitCore [nombre de clase de prueba]
Referencia: Preguntas frecuentes sobre 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]
java -cp .:/usr/share/java/junit4.jar org.junit.runner.JUnitCore [test class name]
En windows es
java -cp .;/path/junit.jar org.junit.runner.JUnitCore TestClass
[nombre de clase de prueba sin extensión .class]
por ejemplo:
c:\>java -cp .;f:/libraries/junit-4.8.2 org.junit.runner.JUnitCore TestSample1 TestSample2 ...
y así sucesivamente, si uno tiene más de una clase de prueba.
-cp significa ruta de clase y el punto (.) representa la ruta de clase existente, mientras que el punto y coma (;) agrega el jar adicional dado a la ruta de clase, como en el ejemplo anterior junit-4.8.2 ahora está disponible en classpath para ejecutar la clase JUnitCore que Aquí hemos utilizado para ejecutar nuestras clases de prueba.
La instrucción de línea de comando anterior le ayuda a ejecutar pruebas junit (versión 4+) desde el símbolo del sistema (es decir, MSDos).
Nota: JUnitCore es una fachada para ejecutar pruebas de junit, esta fachada se incluye en 4+ versiones de junit.
En realidad, también puede hacer que Junit pruebe un Jar ejecutable y llame al jar ejecutable como java -jar
Si su proyecto está basado en Maven, puede ejecutar todos los métodos de prueba desde la clase de prueba CustomTest que pertenece al módulo 'my-module' usando el siguiente comando:
mvn clean test -pl :my-module -Dtest=CustomTest
O ejecute solo 1 método de prueba myMethod desde test-class CustomTest usando el siguiente comando:
mvn clean test -pl :my-module -Dtest=CustomTest#myMethod
Para esta capacidad necesita Maven Surefire Plugin v.2.7.3 + y Junit 4. Más detalles aquí: http://maven.apache.org/surefire/maven-surefire-plugin/examples/single-test.html
Alternativamente, puede utilizar los siguientes métodos en la clase JunitCore http://junit.sourceforge.net/javadoc/org/junit/runner/JUnitCore.html
run (con Request, Class classes y Runner) o runClasses desde su archivo java.
Si su proyecto está basado en hormigas, entonces debería poder hacer algo así desde la consola:
ant test
Si esto no funciona, pero aún así su proyecto está basado en hormigas, puede ejecutar ant -p
para enumerar los principales objetivos del proyecto.