217 votes

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

Lorsque j'essaie d'exécuter le test suivant dans IntelliJ IDEA J'ai compris le message :

" !!! JUnit version 3.8 ou ultérieure attendue :"

Il convient de noter qu'il s'agit d'une Android le 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

0 votes

Intellij 9, le dernier patch.

1 votes

0 votes

Honnêtement, j'ai finalement renoncé à utiliser le plugin Android dans IntelliJ et j'ai pris le risque d'utiliser la dernière version d'Android Studio. Tout va bien.

365voto

CrazyCoder Points 103123

Ce problème se produit parce que la plate-forme Android ( android.jar ) contient déjà des classes JUnit. L'exécuteur de tests IDEA charge ces classes et voit qu'elles proviennent de l'ancien JUnit, alors que vous essayez d'utiliser des tests annotés, qui sont une fonctionnalité du nouveau JUnit, et vous obtenez donc l'erreur de l'exécuteur de tests.

La solution est simple, ouvrez le Project Structure | Modules | Dependencies et déplacez le junit-4.7.jar pour qu'il vienne antes de Android 1.6 Platform dans le classpath. Maintenant, le programme d'exécution des tests sera content car il chargera la nouvelle version de JUnit.

12 votes

Pour que les gens sachent que ce problème existe toujours avec les versions ultérieures d'Android.

0 votes

J'ai également résolu le problème dans maven en plaçant la dépendance fournie par Android après les dépendances de test

18 votes

J'ai un projet Android gradle qui utilise robolectric comme décrit ici : peterfriese.de/Android-testing-with-robolectric et lorsque je déplace la plate-forme Android de 1st dans le classpath, j'obtiens l'exception suivante : Class not found: "com.example.intellijgradletest.MainActivityTest"

36voto

nutella_eater Points 3090

enter image description here

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

Vous pouvez également le faire globalement via Paramètres du module > Emplacement du SDK > JDK, en spécifiant le JDK 8 d'Oracle au lieu de la copie du SDK Android.

8voto

Uwe Post Points 71

J'ai eu ce problème avec un projet multi-modules (libgdx). Un module est purement Java et comporte des tests. Ma solution a été de définir "use alternative JRE" sur "Java 1.8" dans la configuration d'exécution de mes tests unitaires. Cela permet de s'assurer qu'aucun Android.jar ne se trouve dans le classpath et que le runner junit 4.x est utilisé.

8voto

CallMeLaNN Points 1945

J'ai eu la même erreur en créant les deux Unit Test y Android Instrument Test dans Android Studio 1.4+ et il a commencé à s'embrouiller. Pour éviter cette erreur assurez-vous que votre classe de test tombe sous Android Tests sur Run/Debug Configurations

  1. Assurez-vous de bien suivre les instructions https://developer.Android.com/training/testing/unit-testing/instrumented-unit-tests.html
  2. Assurez-vous que Test Artifact en Build Variants est réglé sur Android Instrumentation Tests
  3. Cliquez sur le menu Run > Edit Configuration
  4. Assurez-vous que le nom de votre classe/méthode est à l'intérieur de Android Tests au lieu de JUnit
  5. Si elle est dans JUnit supprimez simplement la configuration et faites un clic droit sur le fichier que vous voulez tester et Run à nouveau. Il créera alors la configuration sous Android Tests et il est exécuté sur un dispositif/émulateur.

5voto

ZahiC Points 3896

Pour Android Studio - à partir de Android Studio 1.1 Beta 4 Google a ajouté la prise en charge d'Android Plugin Gradle 1.1.0-RC . Le nouveau plugin supporte les tests unitaires via Android Studio en utilisant junit 4+.

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

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X