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.

4voto

shocking Points 304

Pour moi, ce problème était dû à une configuration d'exécution des tests obsolète ou cassée. J'ai simplement dû supprimer la configuration, puis en créer une nouvelle et le problème était réglé.

Delete the old test configuration

4voto

rontho Points 331

Pour tous ceux qui lisent cet article et ont toujours le même problème avec AndroidStudio 1.0. Vous ne pouvez pas changer l'ordre des dépendances dans AndroidStudio, l'IDE les réécrit automatiquement. Et, même si vous parvenez à changer l'ordre en modifiant le fichier .iml, vous obtiendrez un "class not found...". Ceci est dû au fait que le chemin de sortie du test ne peut pas être défini dans AndroidStudio.

En fait, il existe une solution pour faire fonctionner AndroidStudio, Junit et Robolectric ensemble. Jetez un coup d'oeil à ceci https://github.com/JCAndKSolutions/Android-unit-test et utiliser ce plugin également : https://github.com/evant/Android-studio-unit-test-plugin

Cela fonctionne parfaitement pour moi.

2voto

Kevin ABRIOUX Points 6237

J'ai obtenu la même erreur lorsque j'ai créé mon propre paquet junit.

enter image description here

Pour résoudre ce problème, j'ai ajouté ces deux lignes dans mon fichier app gradle, comme il est expliqué. aquí :

dependencies {
    ...
    // Required -- JUnit 4 framework
    testCompile 'junit:junit:4.12'
    // Optional -- Mockito framework
    testCompile 'org.mockito:mockito-core:1.10.19'
}

1voto

liminal Points 426

Voici comment je l'ai résolu :

Editer les Configurations -> Défauts -> Android JUnit -> Ajouter ce qui suit au répertoire de travail :

$MODULE_DIR$

1voto

Olli Points 703

J'ai reçu le même message

JUnit version 3.8 or later expected

par une simple erreur de débutant. J'avais utilisé les mêmes noms de package et de classe sur src/main et src/test pour une classe (la classe HomeController dans mon cas) :

my-test-project
  +--pom.xml
  +--src
    +--main
      +--com
        +--example
          +--Application.java
          +--controller
            +--HomeController.java
    +--test
      +--com
        +--example
          +--ApplicationTest.java
          +--controller
            +--HomeController.java  <---- same package and class name: not good!

Ainsi, la classe src/main HomeController, ainsi que la classe src/test HomeController, ont le même chemin complet :

com.example.controller.HomeController.class

Le résultat : tous les tests qui dépendaient de la classe HomeController ont échoué.

Le changement du nom du paquet et/ou du nom de la classe a résolu le problème. Voici l'exemple, lorsque le nom du paquet et le nom de la classe sont tous deux modifiés :

my-test-project
  +--pom.xml
  +--src
    +--main
      +--com
        +--example
          +--Application.java
          +--controller
            +--HomeController.java
    +--test
      +--com
        +--example
          +--test                       <---- added (optional)
            +--ApplicationTest.java
            +--controller
              +--HomeControllerTest.java    <---- changed

Maintenant, les noms de classe entièrement qualifiés diffèrent. Le nom de la classe src/main HomeController est :

com.example.controller.HomeController.class

et le nom de la classe src/test HomeHontrollerTest est :

com.example.test.controller.HomeControllerTest.class

Comme les noms de classe entièrement qualifiés sont uniques, le problème disparaît.

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