ИДЕЯ IntelliJ с Junit 4.7 “!!! Версия 3.8 JUnit или позже ожидаемый”:

Когда я пытаюсь запустить следующий тест в ИДЕЕ IntelliJ, я получаю сообщение:

"!!! Версия 3.8 JUnit или позже ожидаемый":

Нужно отметить, что это - проект Android, я продолжаю работать в ИДЕЕ IntelliJ 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());
    }
}

Полное отслеживание стека похоже на это...

!!! JUnit version 3.8 or later expected:

java.lang.RuntimeException: Stub!
    at junit.runner.BaseTestRunner.(BaseTestRunner.java:5)
    at junit.textui.TestRunner.(TestRunner.java:54)
    at junit.textui.TestRunner.(TestRunner.java:48)
    at junit.textui.TestRunner.(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

204
задан weston 30 May 2017 в 08:27
поделиться

2 ответа

Эта проблема возникает потому, что платформа Android (android.jar) уже содержит классы JUnit. Программа запуска тестов IDEA загружает эти классы и видит, что они принадлежат старому JUnit, в то время как вы пытаетесь использовать аннотированные тесты, которые являются особенностью нового JUnit, поэтому вы получаете ошибку от программы запуска тестов.

Решение простое, откройте Project Structure | Modules | Dependencies, и переместите junit-4.7.jar вверх, так чтобы он оказался перед Android 1.6 Platform в classpath. Теперь программа запуска тестов будет счастлива, поскольку загрузит новую версию JUnit.

362
ответ дан 23 November 2019 в 04:54
поделиться

Я могу представить, что могут произойти две вещи

  • , если ваша среда IDE попытается запустить тест Android Junit, который запускается напрямую на эмуляторе нельзя использовать Junit4.
  • Если вы случайно использовали классы junit, предоставленные из jar-файла android, они не могут работать на обычном jvm, потому что для android dalvik vm существуют только настоящие скомпилированные классы.
1
ответ дан 23 November 2019 в 04:54
поделиться
Другие вопросы по тегам:

Похожие вопросы: