Android

IntelliJ IDEA with Junit 4.7 "!!! JUnit version 3.8 or later expected:"

IntelliJ IDEA с Junit 4.7 "!!! Ожидается версия JUnit 3.8 или более поздняя:"

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


"!!! Ожидается JUnit версии 3.8 или более поздней:"


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

Полная трассировка стека выглядит следующим образом...

!!! 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
Переведено автоматически
Ответ 1

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

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

Ответ 2

введите описание изображения здесь

мой модуль - это модуль библиотеки java, поэтому изменение JRE на 1.8 java решило проблему.

Или вы также можете сделать это глобально через Настройки модуля> Расположение SDK> JDK, указав JDK 8 от Oracle вместо копии Android SDK.

Ответ 3

У меня была эта проблема с многомодульным проектом (libgdx). Один модуль - чистая Java и имеет тесты. Моим решением было установить для "использовать альтернативный JRE" значение "Java 1.8" в конфигурации запуска моих модульных тестов. Это гарантирует, что no android.jar находится в пути к классу и используется junit 4.x runner.

Ответ 4

Я получил ту же ошибку при создании обоих Unit Test и Android Instrument Test в Android Studio 1.4+, и это начало сбивать с толку. Чтобы избежать этой ошибки, убедитесь, что ваш тестовый класс подпадает под Android Tests on Run/Debug Configurations


  1. Убедитесь, что вы правильно следуете инструкции https://developer.android.com/training/testing/unit-testing/instrumented-unit-tests.html

  2. Убедитесь, что для Test Artifact in Build Variants установлено значение Android Instrumentation Tests

  3. Нажмите меню Run > Edit Configuration

  4. Убедитесь, что имя вашего класса / метода находится внутри Android Tests вместо JUnit

  5. Если он включен, JUnit просто удалите конфигурацию и щелкните правой кнопкой мыши на файле, который вы хотите протестировать, и Run еще раз. Затем он создаст конфигурацию в разделе Android Tests и запустит ее на устройстве / эмуляторе.

2023-05-18 11:27 java android intellij-idea