Estou recebendo este erro ao executar o teste JUnit no Eclipse:
Class not found com.myproject.server.MyTest
java.lang.ClassNotFoundException: com.myproject.server.MyTest
at java.net.URLClassLoader$1.run(URLClassLoader.java:366)
at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
at java.security.AccessController.doPrivileged(Native Method)
at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
at java.lang.ClassLoader.loadClass(ClassLoader.java:423)
at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
at java.lang.ClassLoader.loadClass(ClassLoader.java:356)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.loadClass(RemoteTestRunner.java:693)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.loadClasses(RemoteTestRunner.java:429)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:452)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:683)
at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:390)
Tentei adicionar JUnit
biblioteca no caminho de classe, embora esteja usando o maven e a biblioteca JUnit esteja na dependência do POM.
Já tentei limpar o projeto e criei um novo caso de teste JUnit usando o plug-in JUnit para Eclipse, ainda obtendo o mesmo erro.
mvn clean test
uma vez que compilará todas as classes de testeRespostas:
Isso parece ocorrer porque apenas o código-fonte está compilando quando você usa
mvn clean compile
(estou usando o maven 3.1.0, então não tenho certeza se ele sempre se comportou assim).Se você executar
mvn test
, o código de teste também será compilado, mas então ele executa os testes (o que pode não ser desejável imediatamente se você estiver tentando executá-los por meio do Eclipse). A maneira de contornar isso é adicionartest-compile
à sua sequência de comando Maven sempre que você faz ummvn clean
. Por exemplo, você correriamvn clean compile test-compile
.fonte
Tive um problema semelhante com meus testes e descobri em algum lugar da Web, que você deve ir para Build Path nas propriedades do seu projeto e mover Maven Dependencies acima da JRE System Library . Isso parece ter funcionado para mim.
fonte
Eu enfrentei o mesmo problema e fui capaz de corrigi-lo usando a resposta de @slomek, mas o problema reapareceu depois disso.
Eu finalmente consertei adicionando a pasta de saída do meu projeto à configuração de execução do teste JUnit. As etapas são:
Project properties -> Java Build Path -> Default output folder
<project-folder>/bin
Run -> Run Configurations...
Classpath
guiaUser Entries
- mesmo se o projeto já estiver incluído láAdvanced -> Add folder
para adicionar a pasta de saídaEsse problema pode ser devido à configuração estranha do projeto no Eclipse - por exemplo, pasta de origem com projetos maven aninhados importados como um único projeto / pasta (pelo menos foi assim que meu projeto foi configurado).
fonte
Se esse problema ocorrer apenas no Eclipse, executar o comando Projeto -> Limpar ... no projeto selecionado pode ajudar.
fonte
Depois de ter tentado tudo aqui sem melhorias, resolvi meu problema apenas reiniciando o Eclipse
fonte
Corrigi meu problema executando a atualização do maven. Clique com o botão direito do mouse em project your project> Maven> Update Project
fonte
No meu caso, eu tinha uma estrutura de diretório maven errada.
Que deve ser assim:
/ src / test / java / com.myproject.server.MyTest
Depois de consertar isso - tudo funcionou como um encanto.
fonte
No meu caso, apenas as próximas etapas me ajudaram a resolver esse problema:
fonte
Anteriormente, neste caso, eu sempre fiz mvn
eclipse:eclipse
e reiniciei meu Eclipse e funcionou. Depois de migrar para o GIT, ele parou de funcionar para mim, o que é um pouco estranho.O problema básico aqui é que o Sr. Eclipse não encontra a classe compilada. Em seguida, defini a pasta de saída como Project / target / test-classes que é gerada por padrão
mvn clean install
sem pular o teste e continuei com a seguinte solução alternativa:Opção 1: definir o caminho de classe para cada caso de teste
Eclipse -> Executar -> Configurações de Execução -> sob JUnit-> selecione mytest -> na guia Classpath-> Selecionar Entradas de Usuário-> Avançado-> Adicionar Pasta -> Selecionar -> Aplicar-> Executar
Opção 2: crie uma variável de caminho de classe e inclua-a no caminho de classe para todos os casos de teste
Eclipse -> Windows -> Variáveis do Classpath -> Novo -> [Nome: Junit_test_cases_cp | path:] -> ok Em seguida, vá para Eclipse-> Executar -> Configurações de execução -> JUnit-> selecione mytest -> na guia de caminho de classe -> Selecionar entradas de usuário-> Avançado-> Adicionar variáveis de caminho de classe-> Selecionar Junit_test_cases_cp-> ok- > Aplicar-> Executar
Esta é a única coisa que está funcionando para mim, depois de tentar todas as sugestões online.
fonte
Tive o mesmo problema com um projeto Gradle com um SourceSet de teste com dois diretórios de recursos.
Este snippet vem de um main-module.gradle e adiciona um diretório de recursos ao SourceSet de teste:
Ao fazer isso, eu tinha dois diretórios de recursos relacionados ao SourceSet de teste do módulo principal do projeto:
../other-module/src/test/resources src / test / resources (relativo à pasta do módulo principal, adicionado automaticamente pelo plugin java)
Descobri que, se eu tivesse dois arquivos com o mesmo nome em ambos os diretórios de origem, algo deu errado no estágio de recursos do processo. Como resultado, nenhuma compilação foi iniciada e por este motivo nenhum .class foi copiado para o diretório bin, onde JUnit estava procurando as classes. O ClassNotFoundException desapareceu apenas renomeando um dos dois arquivos.
fonte
NoClassDefFoundError realmente significa que não pode inicializar a classe. Não tem nada a ver com encontrar a classe. Recebi este erro ao chamar trim () em uma String nula.
JUnit não mostrará NullPointerException. A string não é nula durante a execução normal porque estou obtendo a string de um arquivo de propriedades que não está disponível para testes.
Meu conselho é remover partes da classe até que seus testes comecem a passar. Então você pode determinar qual linha está apresentando o erro.
fonte
Eu tive um problema semelhante com meu Eclipse Helios, que depurava Junits. Meu problema era um pouco diferente, pois era capaz de executar o Junits com êxito, mas quando estava obtendo ClassNotFoundException durante a depuração dos mesmos JUNITs.
Eu tentei todos os tipos de soluções diferentes disponíveis em Stackoverflow.com e fóruns em outros lugares, mas nada parece funcionar. Depois de bater minha cabeça com esses problemas por quase dois dias, finalmente descobri a solução para eles.
Se nenhuma das soluções parecer funcionar, apenas exclua a pasta .metadata criada em sua área de trabalho. Isso criaria uma sobrecarga adicional de importação de projetos e todos os tipos de configuração que você fez, mas isso certamente resolverá esses problemas.
Espero que isso ajude.
fonte
Essas etapas funcionaram para mim.
fonte
Eclipse de 1- mvn: eclipse
2- projeto limpa todos os projetos
3- reiniciar
fonte
Vale a pena mencionar como outra resposta que se você estiver usando eGit e seu classpath for atualizado por causa de, digamos, uma ferramenta de cobertura de teste como Clover, às vezes há um soluço de limpeza que não exclui completamente o conteúdo de
/path/to/git/repository/<project name>/bin/
Basicamente, usei o Error Log View do Eclipse, identifiquei o que estava causando problemas durante esse esforço de limpeza, naveguei até o diretório de origem e excluí manualmente o
<project name>/bin
diretório. Assim que terminei, voltei para o Eclipse e atualizei (F5
) meu projeto e o erro foi embora.fonte
Verifique se o seu projeto está aberto como um projeto Maven e não apenas um projeto Java normal. Na verdade, um acéfalo, mas esse é exatamente o mesmo motivo pelo qual você pode perdê-lo.
fonte
Também pode ser devido a "[ERROR] Nenhum compilador é fornecido neste ambiente. Talvez você esteja executando em um JRE em vez de um JDK?"
fonte
Eu havia enfrentado o mesmo problema. Eu resolvi isso removendo a dependência JUnit jar externa que adicionei por download da Internet externamente. Mas então fui para projeto-> propriedades-> caminho de construção-> adicionar biblioteca-> junit-> selecionei a versão (ex junit4) -> aplicar.
Ele adicionou automaticamente a dependência. resolveu meu problema.
fonte
Fazer algumas alterações fictícias e salvar a classe de teste pode resolver o problema. Ele irá construir o .class automaticamente
fonte
Parece problema de compilação. Execute o projeto como teste Maven e, em seguida, execute como teste JUnit.
fonte
Para projetos que não usam maven: funcionou para mim https://ihategeek.wordpress.com/2012/04/18/eclipse-junit-test-class-not-found/
Adicionar o jre e o src do projeto na parte inferior do pedido e exportar no caminho de construção
fonte
Por favor, verifique se você adicionou junit4 como dependência.
por exemplo
fonte
Pode ser que você tenha esquecido de colocar a classe Principal e a classe Caso de Teste em / src / test / java. Verifique uma vez.
fonte