Pergunta

Eclipse3.7.2

Acabei de implementar um @Rule em alguns testes JUnit 4, mas quando os executo no Eclipse, o MethodRule métodos não estão sendo chamados.É como se o executor de testes do Eclipse não reconhecesse o @Rule implementações e não faz nada de especial com campos anotados com @Rule.

Eu até tentei usar uma MethodRule "Padrão" como org.junit.rules.TestName mas não funciona corretamente (os nomes dos testes não são preenchidos na instância).Até mesmo o teste de exemplo no JavaDoc de TestName falha quando executado no Eclipse.

Existe algum truque?O Eclipse simplesmente não suporta JUnit Regras?

Foi útil?

Solução

Acontece que alguém incluiu um JAR aparentemente "obrigatório" no caminho de classe do tempo de execução do projeto em questão.Esse JAR incorpora, entre outras coisas que não deveria, os pacotes JUnit!Então existe esse JAR, chamado algo inócuo como our_runtime_library.jar que possui algum código específico do aplicativo junto com algumas versões desconhecidas (mas antigas) do JUnit, Spring e quem sabe o que mais.Ao executar o projeto como um teste de unidade, o Eclipse estava pegando o JUnit naquele JAR em vez de sua própria versão (como deveria, bibliotecas específicas do projeto sempre têm precedência), a versão (Eclipse) contra a qual o projeto foi construído.

Que bagunça;agora vamos descobrir quem merece 50 chicotadas por este.

Outras dicas

Deve funcionar, pelo menos no meu Eclipse (no JUnit 4.8 incorporado).Então você poderia mostrar seu código.

Adicional, JavaDoc diz: Note that MethodRule is now deprecated, you should be using TestRule instead.

Licenciado em: CC-BY-SA com atribuição
Não afiliado a StackOverflow
scroll top