Executando um único teste JUnit no Eclipse

85

Se eu tiver um conjunto de testes com vários testes, quando tento executar um único teste de unidade, seja a partir do menu de contexto do editor de código ou da visualização JUnit, parece insistir em sempre executar o conjunto inteiro, em vez de teste único. Existe uma maneira de desabilitar para mudar esse comportamento para que eu possa pedir para executar esse, e somente aquele, teste.

user14128
fonte
11
Seria bom se você escolhesse a melhor resposta marcando a marca verde ao lado da resposta.
guerda

Respostas:

96

No explorador de pacotes desdobrar a aula. Deve mostrar todos os métodos. Clique com o botão direito no método que deseja executar e selecione Executar como -> JUnit no menu de contexto (recém-testado com Eclipse 3.4.1). Além disso, selecionar "Executar" em uma única entrada na visualização de resultados JUnit para executar novamente um teste funciona da mesma maneira.

Volker Stolz
fonte
3
Infelizmente, isso só funciona para métodos de teste que são implementados diretamente nessa classe. Não funciona para métodos @Test herdados.
Christopher Barber,
1
Observe que parece que você deve clicar no nome do método. Clicar dentro do método executará toda a classe. (Ou pelo menos é assim que está se comportando para mim.)
emragins
Parece funcionar apenas a partir deste "explorador de pacotes" em particular, o que é mais do que complicado quando se trata de encontrar rapidamente um método que você deseja testar. E mesmo assim, o depurador parece ignorar os outros métodos - o que consome tempo extra. Deve haver uma maneira melhor ...
Macilias
e também é frágil ... agora o eclipse decidiu não pular outros testes ao executar desta forma :(
Macilias
27

A maneira mais rápida que conheço:

  1. Pressione Ctrl+ Shift+ (move o cursor para a declaração do método atual),
  2. pressione Alt+ Shift+ x(ou dpara depurar) e pressione t(tecla de atalho para "Executar teste JUnit" ),
  3. verificar o resultado do teste,
  4. pressione Alt+ para voltar à linha de código que estava antes.

Se quiser executar todos os testes, você pode pular as etapas 1 e 4.

schnatterer
fonte
13

No Eclipse 3.5, você pode contornar isso alterando o executor de teste para JUnit 3. Isso funcionará apenas para testes JUnit 3, não testes JUnit 4. Você pode alterar o executor de teste fazendo o seguinte:

  1. Clique com o botão direito em um dos métodos de teste no explorador de esboço
  2. Selecione Executar como -> Configurações de execução
  3. Na guia 'Teste', selecione 'Executar um único teste'
  4. No menu suspenso Test Runner, selecione 'JUnit 3'

Pode funcionar em outras versões também.

lucrussell
fonte
Boa decisão! Alterar "Test Runner" para "JUnit 3" na caixa de diálogo de configurações de execução funcionou para mim no Eclipse 3.6.0 (Helios). Agora posso executar um único método em um teste JUnit. FWIW, nunca tive problemas ao executar classes de teste individuais JUnit 3 ou 4 .
Adam Monsen
Perfeito, isso funcionou para mim também. A resposta acima não, embora pareça ter mais votos positivos.
dreza
12

Isso é possível no Eclipse Indigo com JUnit 4.8.2. Clique com o botão direito do mouse no método que deseja testar individualmente no Outlinepainel e selecione Run As -> JUnit Test.

Você pode até clicar com o botão direito do mouse seletivamente no nome do método de teste no editor de código-fonte e selecionar Run As -> Junit Test.

Wulfgarpro
fonte
1
parece que iria testar aquele caso de teste específico. No entanto, depois disso, ele ainda continua com outros casos de teste.
lwpro2
@ lwpro2 Você deve usar o JUnit 4 (anotações) para testar um único caso de teste. JUnit 3 (extender TestCase) ainda executará todos os testes relacionados.
AnthonyW
1
wulfgar.pro Eu estava informando @ lwpro2 que se você estiver executando seu teste JUnit com um runner JUnit 4 (porque, por exemplo, você está usando JUnit 4.8.2) AINDA seu teste ainda estende TestCase, você não será capaz de executar um único teste por si só. Você deve usar um executor JUnit 3 ou converter seu teste para usar anotações.
AnthonyW
obrigado pelos comentários. No entanto, eu estava usando Junit4, com SpringJunit4ClassRunner. Enfim, não é grande coisa. comentar a anotação é rápido.
lwpro2
esta resposta é mais simples
Jackson Tale
9

Não use Strg+, F11mas a tecla de atalho Alt+ Shift+ X-> T.
Em seguida, o Eclipse executará o arquivo aberto atual como um teste JUnit. O botão verde de reprodução executará apenas a última configuração de execução escolhida.

Para mim, funciona bem com Alt+ Shift+ X-> T.

guerda
fonte
Obrigado. Mas digamos que você esteja trabalhando em uma classe que está sendo testada por um teste de unidade. Conforme você modifica a classe, como você executa seu UnitTest correspondente sem alternar a janela para o arquivo UnitTest?
bibstha
@bibstha Você pode usar Ctrl + 3 e então digitar "rerun". Isso permite que você execute novamente o último caso de teste JUnit. Em Janela-> Preferências-> Geral-> Teclas, você pode atribuir um atalho próprio para esta ação. Ctrl + Shift + F11 seria adequado, na minha opinião.
guerda
9

Acrescentarei aos outros incluindo uma única forma de teclado altamente produtiva que permite depurar um único teste de unidade (método).

Mova o cursor para o nome do método usando um

  • Ctrl+ Shift+ Upou
  • Ctrl+ Shift+ Downou
  • Ctrl+ oentão digite o nome do método

Assim que o cursor estiver sobre o nome do método (ou imediatamente antes dele):

  • Alt+ Shift+ D-> T(Depurar)
  • Alt+ Shift+ X-> T(Executar)

Depois de executar o teste, você pode voltar para onde o cursor estava fazendo:

Alt+Back

Você quase obtém um comportamento semelhante ao REPL ao:

Ctrl+ Shift+ Upe Alt+ Shift+ X-> Te Alt+Back

Você também pode definir rapidamente um ponto de interrupção:

Ctrl+ Shift+B

Adam Gent
fonte
3

Clique com o botão direito em algum lugar no nome do método de teste no arquivo e selecione "Executar" -> "Teste Junit". Eu faço isso o tempo todo com o Kepler e o JUnit 4.

Kyle Dyer
fonte
2

Tive o mesmo problema que outras pessoas tiveram ao usar o Eclipse 3.4.1 e o executor de teste JUnit 4 - não conseguia executar um único teste. Mas encontrei uma sugestão em outro lugar que resolveu o problema. Minha classe de teste ainda estava estendendo junit.framework.TestCase. Quando parei de estender o TestCase, tudo funcionou bem e consegui executar testes JUnit únicos com o executor de teste JUnit 4. Claro, eu precisava que as anotações do JUnit 4 usassem importações estáticas para os métodos de assert, mas eu já tinha feito isso - eu simplesmente não tinha removido a herança do TestCase.

Ghirschhorn
fonte
1

Se você tiver muitos testes em mais de um arquivo e quiser executar apenas os testes em um arquivo específico, poderá clicar com o botão direito nesse arquivo e selecionar executar como -> teste junit. Agora, se você deseja executar apenas um teste, contido em um arquivo com muitos testes, meu palpite é (eu não tenho o Eclipse instalado aqui) que a visualização Outline listará todos os métodos de teste para um arquivo, e você provavelmente será capaz de clique com o botão direito em um único método de teste e execute-o como um teste JUNit.

Espero que ajude.

Tom
fonte
1

Para executar apenas um método de teste.
No (explorador de pacotes ou explorador de projetos) desdobrar a classe. Deve mostrar todos os métodos. Clique com o botão direito no método que deseja executar e selecione Executar como -> JUnit no menu de contexto.
insira a descrição da imagem aqui

danilo
fonte
0

Para mim, ele também não funciona no Eclipse 3.4.2, embora tenha funcionado nas versões anteriores (tentei executar o método único no explorador de pacotes e o teste junit único na visualização junit)


fonte
Executar um único método / teste no Package Explorer funciona perfeitamente para mim no Eclipse 3.4.2.
Volker Stolz,
0

Eu concordo com o ponto sobre 3.4.2 não funcionar mais da maneira que funcionava nas versões anteriores. Antes, você poderia clicar com o botão direito em um único teste em um grupo de testes da visualização JUnit e executar apenas esse teste. Na versão mais recente, insiste em sempre rodar todos eles. Concedido, a exibição executa o teste em que você clicou primeiro e despeja o restante em um rollup chamado "Testes sem raiz". Se alguém descobrir isso, gostaria de saber como contornar isso.

ra9r
fonte
0

Lendo alguns dos comentários aqui, parece que você pode estar interessado em executar os testes para o código que você altera à medida que o altera, sem perder o foco no código no qual está trabalhando. Existe um plugin Eclipse para fazer exatamente isso. Veja infinitest .

unigeek
fonte