Eu gostaria de executar casos de teste JUnit na linha de comando. Como posso fazer isso?
javac -cp "junit-4.12.jar; hamcrest-core-1.3.jar;." Tests.java
trabalhou para mim. Observe o ponto final - é importante!
Eu gostaria de executar casos de teste JUnit na linha de comando. Como posso fazer isso?
javac -cp "junit-4.12.jar; hamcrest-core-1.3.jar;." Tests.java
trabalhou para mim. Observe o ponto final - é importante!
Respostas:
Para o JUnit 5.x , é:
java -jar junit-platform-console-standalone-<version>.jar <Options>
Encontre um breve resumo em https://stackoverflow.com/a/52373592/1431016 e detalhes completos em https://junit.org/junit5/docs/current/user-guide/#running-tests-console-launcher
Para o JUnit 4.X , é realmente:
java -cp .:/usr/share/java/junit.jar org.junit.runner.JUnitCore [test class name]
Mas se você estiver usando o JUnit 3.X, observe que o nome da classe é diferente:
java -cp .:/usr/share/java/junit.jar junit.textui.TestRunner [test class name]
Pode ser necessário adicionar mais JARs ou diretórios com seus arquivos de classe ao caminho de classe e separá-lo com ponto e vírgula (Windows) ou dois pontos (UNIX / Linux). Depende do seu ambiente.
Editar: adicionei o diretório atual como exemplo. Depende do seu ambiente e de como você constrói seu aplicativo (pode ser bin / ou build / ou mesmo my_application.jar etc). Nota O Java 6+ suporta globs no caminho de classe, você pode:
java -cp lib/*.jar:/usr/share/java/junit.jar ...
Espero que ajude. Escreva testes! :-)
Maneira Maven
Se você usa o Maven, pode executar o seguinte comando para executar todos os seus casos de teste:
mvn clean test
Ou você pode executar um teste específico como abaixo
mvn clean test -Dtest=your.package.TestClassName
mvn clean test -Dtest=your.package.TestClassName#particularMethod
Se você deseja ver o rastreamento da pilha (se houver) no console, em vez dos arquivos de relatório na pasta target \ surefire-reports, configure a propriedade do usuário surefire.useFile como false. Por exemplo:
mvn clean test -Dtest=your.package.TestClassName -Dsurefire.useFile=false
Maneira Gradle
Se você usa Gradle, pode executar o seguinte comando para executar todos os seus casos de teste:
gradle test
Ou você pode executar um teste específico como abaixo
gradle test --tests your.package.TestClassName
gradle test --tests your.package.TestClassName.particularMethod
Se desejar obter mais informações, considere opções como --stacktrace, ou --info ou --debug.
Por exemplo, quando você executa o Gradle com o nível de registro de informações --info, ele mostra o resultado de cada teste enquanto eles estão em execução. Se houver alguma exceção, ele mostrará o rastreamento da pilha, indicando qual é o problema.
gradle test --info
Se você deseja ver os resultados gerais do teste, pode abrir o relatório no navegador, por exemplo (Abra-o usando o Google Chrome no Ubuntu):
google-chrome build/reports/tests/index.html
Maneira da formiga
Depois de configurar o arquivo de construção Ant, build.xml, você pode executar seus casos de teste JUnit na linha de comando, como abaixo:
ant -f build.xml <Your JUnit test target name>
Você pode seguir o link abaixo para ler mais sobre como configurar testes JUnit no arquivo de construção do Ant: https://ant.apache.org/manual/Tasks/junit.html
Maneira normal
Se você não usar o Maven, Gradle ou Ant, poderá seguir o seguinte caminho:
Primeiro de tudo, você precisa compilar seus casos de teste. Por exemplo (no Linux):
javac -d /absolute/path/for/compiled/classes -cp /absolute/path/to/junit-4.12.jar /absolute/path/to/TestClassName.java
Em seguida, execute seus casos de teste. Por exemplo:
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
A resposta que o @lzap deu é uma boa solução. No entanto, gostaria de acrescentar que você deve adicionar. para o caminho da classe, para que seu diretório atual não seja deixado de fora, resultando em suas próprias classes. Isso aconteceu comigo em algumas plataformas. Portanto, uma versão atualizada para o JUnit 4.x seria:
java -cp .:/usr/share/java/junit.jar org.junit.runner.JUnitCore [test class name]
Verifique se JUnit.jar está no seu caminho de classe e, em seguida, chame o corredor da linha de comandos no console
java org.junit.runner.JUnitCore [nome da classe de teste]
Referência: junit FAQ
Com o JUnit 4.12, o seguinte não funcionou para mim:
java -cp .:/usr/share/java/junit.jar org.junit.runner.JUnitCore [test class name]
Aparentemente , a partir do JUnit 4.11 em diante, você também deve incluir hamcrest-core.jar
no seu caminho de classe:
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]
No windows é
java -cp .;/path/junit.jar org.junit.runner.JUnitCore TestClass
[nome da classe de teste sem extensão .class]
por exemplo:
c:\>java -cp .;f:/libraries/junit-4.8.2 org.junit.runner.JUnitCore TestSample1 TestSample2 ...
e assim por diante, se houver mais de uma classe de teste.
-cp representa o caminho da classe e o ponto (.) representa o caminho de classe existente enquanto o ponto-e-vírgula (;) anexa o jar fornecido ao caminho de classe, como no exemplo acima, junit-4.8.2 agora está disponível no caminho de classe para executar a classe JUnitCore que aqui usamos para executar nossas classes de teste.
A instrução da linha de comando acima ajuda a executar testes junit (versão 4+) no prompt de comando (ou seja, MSDos).
Nota: O JUnitCore é uma fachada para executar testes de junit, essa fachada está incluída em mais de 4 versões do junit.
Na verdade, você também pode tornar o teste Junit um jar executável e chamar o jar executável como java -jar
Se o seu projeto for baseado em Maven, você poderá executar todos os métodos de teste da classe de teste CustomTest, que pertence ao módulo 'my-module', usando o seguinte comando:
mvn clean test -pl :my-module -Dtest=CustomTest
Ou execute apenas 1 método de teste myMethod da classe de teste CustomTest usando o próximo comando:
mvn clean test -pl :my-module -Dtest=CustomTest#myMethod
Para essa capacidade, você precisa do Maven Surefire Plugin v.2.7.3 + e Junit 4. Mais detalhes estão aqui: http://maven.apache.org/surefire/maven-surefire-plugin/examples/single-test.html
Como alternativa, você pode usar os seguintes métodos na classe JunitCore http://junit.sourceforge.net/javadoc/org/junit/runner/JUnitCore.html
execute (com Request, Class classes e Runner) ou runClasses do seu arquivo java.
Se você projetar com base em formigas, poderá fazer algo assim no console:
ant test
Se isso não funcionar, mas o seu projeto ainda for baseado em formigas, você poderá executar ant -p
para listar os principais destinos do projeto.