Quando tento executar o seguinte teste no IntelliJ IDEA , recebo a mensagem:
"!!! JUnit versão 3.8 ou posterior esperado:"
Note-se que este é um projeto Android no qual estou trabalhando no IntelliJ IDEA 9.
public class GameScoreUtilTest {
@Test
public void testCalculateResults() throws Exception {
final Game game = new Game();
final Player player1 = new Player();
{
final PlayedHole playedHole = new PlayedHole();
playedHole.setScore(1);
game.getHoleScoreMap().put(player1, playedHole);
}
{
final PlayedHole playedHole = new PlayedHole();
playedHole.setScore(3);
game.getHoleScoreMap().put(player1, playedHole);
}
final GameResults gameResults = GameScoreUtil.calculateResults(game);
assertEquals(4, gameResults.getScore());
}
}
O rastreamento de pilha completa se parece com isso ...
!!! JUnit version 3.8 or later expected:
java.lang.RuntimeException: Stub!
at junit.runner.BaseTestRunner.<init>(BaseTestRunner.java:5)
at junit.textui.TestRunner.<init>(TestRunner.java:54)
at junit.textui.TestRunner.<init>(TestRunner.java:48)
at junit.textui.TestRunner.<init>(TestRunner.java:41)
at com.intellij.rt.execution.junit.JUnitStarter.junitVersionChecks(JUnitStarter.java:152)
at com.intellij.rt.execution.junit.JUnitStarter.canWorkWithJUnitVersion(JUnitStarter.java:136)
at com.intellij.rt.execution.junit.JUnitStarter.main(JUnitStarter.java:49)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25)
at java.lang.reflect.Method.invoke(Method.java:597)
at com.intellij.rt.execution.application.AppMain.main(AppMain.java:110)
Process finished with exit code -3
java
android
junit
intellij-idea
benstpierre
fonte
fonte
Respostas:
Esse problema ocorre porque a plataforma Android (
android.jar
) já contém classes JUnit. O executor de teste do IDEA carrega essas classes e vê que são do JUnit antigo, enquanto você tenta usar testes anotados, que são um recurso do novo JUnit, portanto, obtém o erro do executor de teste.A solução é simples, abra o
Project Structure
|Modules
|Dependencies
e mova ajunit-4.7.jar
seta para cima, para que ela seja apresentada antesAndroid 1.6 Platform
no caminho da classe. Agora, o executor de testes ficará feliz ao carregar a nova versão do JUnit.fonte
Class not found: "com.example.intellijgradletest.MainActivityTest"
meu módulo é um módulo de biblioteca java, portanto, alterar o JRE para 1,8 java resolveu o problema.
Ou você também pode fazer isso globalmente em Configurações do módulo> Localização do SDK> JDK, especificando o JDK 8 do Oracle em vez da cópia do SDK do Android.
fonte
~/Library/Preferences/AndroidStudioX.X/options/jdk.table.xml
ouC:\Users\Name\.AndroidStudioX.X\config\options\jdk.table.xml
no Windows. Encontre o nó<name value="Android API 28 Platform" />
e defina-o<annotationsPath>
como<root url="jar://$USER_HOME$/Android-SDK/platforms/android-28/data/annotations.zip!/" type="simple" />
. Verifique também se o<classPath>
nó contém osplatforms/android-28/...
dois URLs do caminho do arquivo. Ajuste "Android-SDK" para o nome da sua pasta.Eu tive esse problema com um projeto de vários módulos (libgdx). Um módulo é Java puro e possui testes. Minha solução foi definir "use JRE alternativo" como "Java 1.8" na configuração de execução dos meus testes de unidade. Isso garante que nenhum android.jar esteja no caminho de classe e que o junit 4.x runner seja usado.
fonte
Eu recebi o mesmo erro ao criar ambos
Unit Test
eAndroid Instrument Test
no Android Studio 1.4 ou superior e ele começou a ficar confuso. Para evitar esse erro, verifique se sua classe de teste está inseridaAndroid Tests
emRun/Debug Configurations
Test Artifact
deBuild Variants
está definido comoAndroid Instrumentation Tests
Run
>Edit Configuration
Android Tests
vez deJUnit
JUnit
simplesmente exclua a configuração e clique com o botão direito do mouse no arquivo que deseja testar eRun
novamente. Ele criará a configuração naAndroid Tests
seção e será executada no dispositivo / emulador.fonte
test
pasta paraandroidTest
pasta. Estúdio Android não atualizar configuração de execução depois de fazer issoPara Android Studio - a partir do Android Studio 1.1 Beta 4 , o Google adicionou suporte para o Android Gradle plugin 1.1.0-RC . O novo plug-in é compatível com o Teste de unidade por meio do Android Studio usando junho 4+.
Isso ainda é experimental e existem algumas etapas manuais para configurar isso.
fonte
Para todos que estão lendo esta postagem e ainda têm o mesmo problema com o AndroidStudio 1.0. Você não pode alterar a ordem de dependência no AndroidStudio, pois o IDE os reescreve automaticamente. E, mesmo se você conseguir alterar a ordem modificando o arquivo .iml, receberá uma "classe não encontrada ...". Isso ocorre porque o caminho de saída de teste não pode ser definido no AndroidStudio.
Na verdade, existe uma solução para fazer AndroidStudio, Junit e Robolectric trabalhando juntos. Dê uma olhada neste https://github.com/JCAndKSolutions/android-unit-test e use este plugin também: https://github.com/evant/android-studio-unit-test-plugin
Funciona perfeitamente para mim.
fonte
Eu recebi o mesmo erro ao criar meu próprio pacote junit
Para corrigir isso, adicionei essas duas linhas no arquivo gradle do aplicativo, conforme explicado aqui :
fonte
Há duas coisas que eu poderia imaginar
fonte
Isso aconteceu comigo também no Android Studio 1.1 - embora deva suportar testes de unidade sem um plug-in.
Em outras máquinas (mesmo projeto, mesma versão do AS), descobri que, ao executar testes de unidade, o IDE não adiciona o arquivo android.jar ao caminho de classe, enquanto o faz na máquina.
Meu melhor palpite foi que, devido à conversão que fizemos de Maven para Gradle e passando de intellij para AS, algum cache de configurações permaneceu em algum lugar da minha máquina que fez com que android.jar fosse adicionado ao caminho de classe.
O que fiz foi limpar todos os caches relacionados ao Android da minha máquina (na pasta c: \ users \ USRE_NAME): .android .AndroidStudio .gradle .m2
Depois disso, reabri o projeto e os testes funcionaram.
Ainda tentando entender o que deu errado, mas isso deve funcionar por enquanto.
fonte
Eu tive esse problema no Android Studio 1.5, porque não sabia que precisava alterar a configuração "Artefato de teste" nas "Variantes de compilação" (canto inferior esquerdo da janela principal) de "Testes de instrumentação do Android" para "Testes de unidade " Ao fazê-lo, você pode ver um arquivo ExampleUnitTest.java na janela Projeto.
fonte
Eu tive o mesmo problema, mas por outro motivo. Eu estava no IntelliJ com um projeto java gradle regular (não android), mas o JDK foi definido como SDK para Android
Project Structure
(era o JDK padrão por alguns motivos). Isso é realmente idiota, mas o IntelliJ não foi bom o suficiente para me indicar o que há de errado, então fiquei preso nisso.fonte
Foi assim que eu resolvi:
Editar configurações -> padrões -> JUnit Android -> adicione o seguinte ao diretório de trabalho:
$ MODULE_DIR $
fonte
Para mim, esse problema foi causado por uma configuração de execução desatualizada / quebrada para os testes. Eu simplesmente tive que excluir a configuração, criar uma nova e o problema foi corrigido.
fonte
No projeto Android que eu tinha
minifyEnabled = true
, depois que mudei parafalse
tudo funcionou.fonte
Se você remover
do seu
build.gradle
vai funcionarfonte
Vá para Estrutura do projeto -> Configuração da plataforma, altere os SDKs para 1,8 e resolvi o meu problema.
fonte
Eu também estava enfrentando o mesmo problema, depois de mudar para build.gradle, está funcionando bem para mim.
altere sua versão junit dentro de build.gradle para:
fonte
Eu segui a resposta do CrazyCoder, mas não havia nenhum arquivo junit mostrado nas dependências. então baixei um de http://www.java2s.com/Code/Jar/j/Downloadjunitjar.htm e adicionei-o pressionando o botão de adição à direita. E funcionou
fonte
Desativar "Usar JDK incorporado" na Estrutura do Projeto / Localização do SDK é o que ajudou no meu caso, mas não sei exatamente qual foi o motivo pelo qual ele estava falhando.
fonte
Substitua seu android.jar na pasta libs pela última. Você pode baixá-lo aqui
fonte
Em AndroidStudio,
Open Project Structure -> SDK Location
, você pode verJDK
localização, uso mudança "Use incorporado JDK" para você possuiJDK
para aplicar, em seguida, mudar de volta para "JDK Use incorporado" , é talvez o trabalhofonte
No meu caso, a alteração
JRE
daRun Configurations
dose resolve o problema, mas quando clico no botão de execução ao lado da função de teste, asJRE
opções são redefinidas para o padrão.Por fim, semelhante à resposta de @CrazyLiu, em
Project Structure - SDK Location - JDK
, selecioneEmbedded JDK
. Porque não há caixa de seleção no Android Studio 3.6.fonte
Eu recebi a mesma mensagem
por um simples erro de iniciante. Eu tinha usado os mesmos nomes de pacote e nomes de classe em src / main e src / test para uma classe (a classe HomeController no meu caso):
Com isso, a classe src / main HomeController, bem como a classe src / test HomeController, tiveram o mesmo caminho completo:
O resultado: todos os testes dependentes da classe HomeController falharam.
Alterar o nome do pacote e / ou o nome da classe resolveu o problema. Aqui o exemplo, quando ambos, o nome do pacote e o nome da classe são alterados:
Agora, os nomes de classe totalmente qualificados diferem. O nome da classe src / main HomeController é:
e o nome da classe src / test HomeHontrollerTest é:
Como os nomes de classe totalmente qualificados são únicos, o problema desaparece.
fonte