IntelliJ idée avec Junit 4.7"!!! JUnit version 3.8 ou version ultérieure attendue:"

quand je tente d'exécuter le test suivant dans IntelliJ idée j'ai le message:

"!!! La version 3.8 de JUnit ou une version ultérieure est attendue: "

il est à noter qu'il s'agit d'un Android projet sur lequel je travaille dans 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());
    }
}

la trace complète de la pile ressemble à ceci...

!!! 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
185
demandé sur weston 2010-03-11 06:38:11

16 réponses

ce problème se produit parce que la plate-forme Android ( android.jar ) contient déjà des classes JUnit. IDEA Test runner charge ces classes et voit qu'ils sont de L'ancienne JUnit, alors que vous essayez d'utiliser des tests annotés qui est une caractéristique de la nouvelle JUnit, donc vous obtenez l'erreur de la part du coureur de test.

la solution est simple, ouvrir le Project Structure | Modules | Dependencies , et déplacer le junit-4.7.jar vers le haut, de sorte qu'il vient avant Android 1.6 Platform dans la catégorie chemin. Maintenant, le coureur de test sera content quand il chargera la nouvelle version de JUnit.

354
répondu CrazyCoder 2013-06-14 21:03:58

enter image description here

mon module est un module de bibliothèque java, donc changer JRE en 1.8 java a résolu le problème.

ou, vous pouvez également le faire globalement via les paramètres du Module > SDK Location > JDK, en spécifiant le JDK 8 D'Oracle au lieu de la copie du SDK Android.

28
répondu alexey polusov 2018-01-08 23:36:12

j'ai eu ce problème avec un projet multi-modules (libgdx). Un module est pur Java et a des tests. Ma solution était de mettre " use alternative JRE "à" Java 1.8 " dans la configuration d'exécution de mes tests unitaires. Cela permet de s'assurer aucun android.est dans le classpath et junit 4.x runner est utilisé.

7
répondu Uwe Post 2015-04-28 12:56:54

j'ai eu la même erreur en créant à la fois Unit Test et Android Instrument Test dans Android Studio 1.4+ et cela a commencé à devenir confus. Pour éviter cette erreur assurez-vous que votre classe test tombe sous Android Tests sur Run/Debug Configurations

  1. assurez-vous de suivre les instructions correctement https://developer.android.com/training/testing/unit-testing/instrumented-unit-tests.html
  2. Assurez-vous que Test Artifact dans Build Variants est défini à Android Instrumentation Tests
  3. cliquez sur le menu Run > Edit Configuration
  4. assurez-vous que votre nom de classe/méthode est à l'intérieur de Android Tests au lieu de JUnit
  5. s'il s'agit de JUnit , supprimez simplement la configuration et faites un clic droit sur le fichier que vous voulez tester et Run à nouveau. Il va ensuite créer la configuration dans la section Android Tests et s'exécuter sur périphérique/émulateur.
6
répondu CallMeLaNN 2016-02-10 18:11:09

pour Android Studio - à partir de Android Studio 1.1 Beta 4 , Google a ajouté le support pour Android Gradle plugin 1.1.0-RC . Le nouveau plugin prend en charge les tests de L'Unité via Android Studio en utilisant junit 4+.

c'est encore expérimental et il y a quelques étapes manuelles pour mettre en place cela.

5
répondu ZahiC 2015-02-08 12:27:37

Pour tout le monde qui est la lecture de ce post et j'ai toujours le même problème avec AndroidStudio 1.0. Vous ne pouvez pas modifier l'ordre des dépendances dans AndroidStudio si L'IDE les réécrit automatiquement. Et, même si vous parvenez à changer l'ordre en modifiant le .iml fichier, vous obtiendrez une "classe introuvable...". C'est parce que le chemin de sortie de Test ne peut pas être défini sur AndroidStudio.

en fait, il y a une solution pour faire travailler ensemble AndroidStudio, Junit et Robolectric. Regardez ce https://github.com/JCAndKSolutions/android-unit-test et utilisez ce plugin aussi bien: https://github.com/evant/android-studio-unit-test-plugin

Fonctionne parfaitement pour moi.

4
répondu rontho 2015-02-13 08:39:49

il y a deux choses que je pourrais imaginer se produire

  • si votre IDE essaie de démarrer un Android Le test de Junit qui fonctionne directement sur le émulateur vous ne pouvez pas utiliser Junit4.
  • si vous avez utilisé accidentellement les classes junit fournies par le jar android, elles ne peuvent pas fonctionner sur une jvm normale car il n'y a que de vraies classes compilées pour la VM android dalvik.
1
répondu Janusz 2010-03-11 09:28:21

cela m'est arrivé aussi bien dans Android Studio 1.1 - bien qu'il devrait prendre en charge les tests de l'unité sans un plugin.

sur d'autres machines (même projet, même version de AS) j'ai constaté que lors de l'exécution de tests unitaires, L'IDE n'ajoute pas l'android.jar file au classpath, alors que dans ma machine il le fait.

Ma meilleure supposition était qu'en raison de la conversion que nous avons fait de Maven à Gradle et se déplaçant d'intellij à que certains cache de paramètres est resté quelque part dans ma machine qui a causé androïde.jar à ajouter au classpath.

ce que j'ai fait est de nettoyer toutes les caches android liés à partir de ma machine (sous la c:\users\USRE_NAME dossier): .Android .AndroidStudio .gradle .m2

après cela j'ai rouvert le projet et les tests ont fonctionné.

essaie toujours de comprendre ce qui a mal tourné, mais ça devrait faire l'affaire pour l'instant.

1
répondu Yossi Shmueli 2015-04-01 05:58:16

j'ai eu ce problème dans Android Studio 1.5, parce que je ne savais pas que je devais changer le paramètre" artefact de Test "dans les" variantes de construction "(coin inférieur gauche de la fenêtre principale) de" tests D'Instrumentation Android "à"Tests unitaires". Quand vous le faites, vous pouvez voir un ExampleUnitTest.fichier java dans la fenêtre du projet.

1
répondu ScarOnTheSky 2016-01-19 10:32:05

j'ai eu le même problème, mais pour une autre raison. J'étais sur IntelliJ avec un projet java gradle régulier (pas android) mais le JDK a été défini sur le SDK Android dans Project Structure (était le JDK par défaut pour certaines raisons). C'est vraiment stupide, mais l'Ide n'était pas assez gentil de m'indiquer ce qui ne va pas, donc je suis coincé.

1
répondu Winter 2017-04-10 23:30:20

j'ai la même erreur quand j'ai créé mon propre paquet junit

enter image description here

pour corriger cela, j'ai ajouté ces deux lignes dans mon fichier app gradle comme il est expliqué ici :

dependencies {
    ...
    // Required -- JUnit 4 framework
    testCompile 'junit:junit:4.12'
    // Optional -- Mockito framework
    testCompile 'org.mockito:mockito-core:1.10.19'
}
1
répondu Kevin ABRIOUX 2017-08-25 12:55:57

C'est comme ça que je l'ai résolu:

Modifier les Configurations - > par défaut - > Android JUnit - > ajouter ce qui suit au répertoire de travail:

$ MODULE_DIR $

1
répondu liminal 2017-11-25 04:44:18

dans Android project j'ai eu minifyEnabled = true , après je l'ai changé en false tout a fonctionné.

0
répondu Przemo 2017-06-02 08:10:18

si vous supprimez""

testOptions {
    unitTests.returnDefaultValues = true
}

à partir de votre build.gradle il travaillera

0
répondu Chiara 2017-06-29 08:44:37

aller à la Structure du projet - > Mise en place de la plate-forme, changer les SDK à 1.8 résolu mon problème.

0
répondu Lin W 2018-01-23 19:59:06

j'étais également face à la même question, après avoir changé en construire.gradle ça fonctionne bien pour moi.

changez votre version junit dans build.Grad à:

    testImplementation 'junit:junit:3.8'
0
répondu Abdul Rizwan 2018-06-27 06:32:05