Estou tentando encontrar uma abordagem que me permita executar um único teste de uma classe JUnit usando apenas a linha de comando e java.
Posso executar todo o conjunto de testes da classe usando o seguinte:
java -cp .... org.junit.runner.JUnitCore org.package.classname
O que eu realmente quero fazer é algo assim:
java -cp .... org.junit.runner.JUnitCore org.package.classname.method
ou:
java -cp .... org.junit.runner.JUnitCore org.package.classname#method
Percebi que pode haver maneiras de fazer isso usando anotações JUnit, mas prefiro não modificar a fonte de minhas classes de teste manualmente (tentando automatizar isso). Também percebi que Maven pode ter uma maneira de fazer isso, mas, se possível, gostaria de evitar depender de Maven.
Então, eu estou me perguntando se há alguma maneira de fazer isso?
Pontos-chave que procuro:
- Capacidade de executar um único teste de uma classe de teste JUnit
- Linha de comando (usando JUnit)
- Evite modificar a fonte de teste
- Evite usar ferramentas adicionais
java
unit-testing
command-line
junit
Kevin Jalbert
fonte
fonte
Respostas:
Você pode fazer um corredor JUnit básico e personalizado com bastante facilidade. Aqui está um que executará um único método de teste no formulário
com.package.TestClass#methodName
:Você pode invocá-lo assim:
Após uma rápida olhada no código-fonte do JUnit, cheguei à mesma conclusão que você de que o JUnit não oferece suporte nativo. Isso nunca foi um problema para mim, pois todos os IDEs têm integrações JUnit personalizadas que permitem executar o método de teste sob o cursor, entre outras ações. Nunca executei testes JUnit diretamente da linha de comando; Eu sempre deixei o IDE ou a ferramenta de construção (Ant, Maven) cuidar disso. Especialmente porque o ponto de entrada CLI padrão (JUnitCore) não produz nenhuma saída de resultado além de um código de saída diferente de zero em falha (ões) de teste.
NOTA: para a versão JUnit> = 4.9, você precisa da biblioteca hamcrest no classpath
fonte
Eu uso o Maven para construir meu projeto e uso o plug-in SureFire maven para executar os testes junit. Desde que você tenha essa configuração, você pode fazer:
Neste exemplo, acabamos de executar um método de teste denominado "testMethod" dentro da classe "GreatTestClass".
Para obter mais detalhes, consulte http://maven.apache.org/surefire/maven-surefire-plugin/examples/single-test.html
fonte
Usamos o IntelliJ e passamos um bom tempo tentando descobrir também.
Basicamente, envolve 2 etapas:
Etapa 1: compilar a classe de teste
% javac -cp .:"/Applications/IntelliJ IDEA 13 CE.app/Contents/lib/*" SetTest.java
Etapa 2: execute o teste
% java -cp .:"/Applications/IntelliJ IDEA 13 CE.app/Contents/lib/*" org.junit.runner.JUnitCore SetTest
fonte