Eu sei que você pode executar todos os testes em uma determinada classe usando:
mvn test -Dtest=classname
Mas eu quero executar um método individual e -Dtest = classname.methodname parece não funcionar.
java
unit-testing
maven-2
BillMan
fonte
fonte
mvn test -Dtest=classname
sintaxe.Respostas:
Para executar um único método de teste no Maven, você precisa fornecer o comando como:
onde
TestCircle
é o nome da classe de teste exyz
é o método de teste.Caracteres curinga também funcionam; no nome do método e no nome da classe.
Se você estiver testando em um projeto de vários módulos, especifique o módulo em que o teste está
-pl <module-name>
.Para testes de integração, use a
it.test=...
opção em vez detest=...
:fonte
-pl <module-name>
.-DfailIfNoTests=false
para pular projetos sem teste.No Tests Were Executed
acontece quando você tenta executar o teste do projeto raiz e há módulos sem testes.mvn "-DTest=JoinTeamTestCases#validateJoinTeam" test
Observe que "-DTest" começa com MAIÚSCULAS 'T'.Há um problema com o surefire 2.12. Foi o que aconteceu comigo ao mudar o maven-surefire-plugin de 2.12 para 2.11:
mvn test -Dtest=DesignRulesTest
mvn test -Dtest=DesignRulesTest
fonte
@Category(IntegrationTest.class)
, use-Dit.test=ClassName
, caso contrário, você ficaráNo tests were executed!
atualizado com as versões mais recentes do plugin.O que faço com meus casos de teste TestNG (desculpe, o JUnit não suporta isso) é que posso atribuir um grupo ao teste que quero executar
E então simplesmente execute 'mvn -Dgroups = broken'.
fonte
Executando um conjunto de métodos em uma única classe de teste Com a versão 2.7.3, você pode executar apenas n testes em uma única classe de teste.
NOTA: é suportado para junho 4.xe TestNG.
Você deve usar a seguinte sintaxe
Você também pode usar padrões
A partir do surefire 2.12.1, você pode selecionar vários métodos (apenas o JUnit4X no momento, os patches são bem-vindos)
Verifique este link sobre testes únicos
fonte
Você pode executar classes e métodos específicos de teste usando a seguinte sintaxe:
fonte
Este comando funciona !!
mvn "-DTest=JoinTeamTestCases#validateJoinTeam" test
Observe que "-DTest" começa com MAIÚSCULAS 'T'.fonte
O parâmetro de teste mencionado por tobrien permite especificar um método usando um # antes do nome do método. Isso deve funcionar para JUnit e TestNG. Eu nunca tentei, basta lê-lo na página do Surefire Plugin :
fonte
Novas versões do JUnit contêm o corredor Categorias: http://kentbeck.github.com/junit/doc/ReleaseNotes4.8.html
Mas o procedimento de liberação do JUnit não é baseado em maven, portanto, os usuários maven precisam colocá-lo manualmente em seus repositórios.
fonte
A partir da versão do plugin surefire 2.22.1 (possivelmente anterior), você pode executar o teste único usando a propriedade testnames ao usar o testng.xml
Dado um testng.xml a seguir
com o pom.xml
Na linha de comando
Leitura adicional - plugin Maven surefire usando testng
fonte
Você pode executar uma única classe de teste, mas não um único método dentro de uma classe de teste. Você usa o nome simples da classe e não o nome completo da classe. Portanto, se você tiver um teste em "org.sonatype.test.MyTest" e esse for o único teste que você deseja executar, sua linha de comando ficará assim:
fonte
Que eu saiba, o plugin surefire não fornece nenhuma maneira de fazer isso. Mas fique à vontade para abrir um problema :)
fonte