Cómo ejecutar casos de prueba de 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 4.X es realmente:

java -cp .:/usr/share/java/junit.jar org.junit.runner.JUnitCore [test class name] 

Pero si usa 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 JAR o directorios con sus archivos de clase a classpath y sepárelos con punto y coma (Windows) o dos puntos (UNIX / Linux). Depende de tu entorno

Editar: he agregado el directorio actual como un ejemplo. Depende de tu entorno y de cómo crees tu 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! 🙂

Manera de Maven

Si usa Maven, puede ejecutar el siguiente comando para ejecutar todos sus casos de prueba:

 mvn clean test 

O puede ejecutar una prueba en particular de la siguiente manera

 mvn clean test -Dtest=your.package.TestClassName mvn clean test -Dtest=your.package.TestClassName#particularMethod 

Si desea ver el seguimiento de la stack (si existe) 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 

Gradle camino

Si usa Gradle, puede ejecutar el siguiente comando para ejecutar todos sus casos de prueba:

 gradle test 

O puede ejecutar una prueba en particular de la siguiente manera

 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 ejecutan. Si hay alguna excepción, le mostrará el seguimiento de la stack, 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 usando Google Chrome en Ubuntu):

 google-chrome build/reports/tests/index.html 

Forma de ant

Una vez que haya configurado su archivo de comstackción Ant build.xml, puede ejecutar sus casos de prueba JUnit desde la línea de comando de la siguiente manera:

 ant -f build.xml  

Puede seguir el enlace a continuación para obtener más información sobre cómo configurar las pruebas de JUnit en el archivo de comstackción Ant: https://ant.apache.org/manual/Tasks/junit.html

Manera normal

Si no usa Maven, Gradle o Ant, puede seguir el siguiente procedimiento:

En primer lugar, debe comstackr 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 debes agregar. a la ruta de la clase, para que su directorio actual no se quede fuera, lo que resulta en 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 corredor de la línea de comando desde la consola

java org.junit.runner.JUnitCore [test class name]

Referencia: Junit FAQ

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 debes 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] 

En windows es

java -cp .;/path/junit.jar org.junit.runner.JUnitCore TestClass [nombre de la 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 camino de clase y el punto (.) representa el classpath existente mientras que semi colon (;) agrega el tarro adicional al camino 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 junit, esta fachada se incluye en 4+ versiones de junit.

En realidad, también puedes hacer que la prueba de Junit sea un Jar ejecutable y llamar al jar ejecutable como java -jar

Si su proyecto está basado en Maven, puede ejecutar todos los métodos de prueba desde TestTest de prueba, que pertenece al módulo ‘my-module’, utilizando el siguiente comando:

 mvn clean test -pl :my-module -Dtest=CustomTest 

O ejecute solo 1 método de prueba myMethod desde TestTest de prueba usando el siguiente comando:

 mvn clean test -pl :my-module -Dtest=CustomTest#myMethod 

Para esta habilidad necesitas 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

Personalmente usaría el corredor JUven de Maven surefire para hacer eso.

Alternativamente, puede utilizar los siguientes métodos en la clase JunitCore http://junit.sourceforge.net/javadoc/org/junit/runner/JUnitCore.html

ejecutar (con Request, Class classes y Runner) o runClasses desde tu archivo java.

Si tu proyecto está basado en una ant, entonces deberías poder hacer algo como esto desde la consola:

 ant test 

Si esto no funciona, pero aun así su proyecto está basado en ant, puede ejecutar ant -p para listar los objectives principales del proyecto.