Когда я пытаюсь запустить следующий тест в IntelliJ IDEA, я получаю сообщение:
Msgstr "!!! Ожидается версия 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
java
android
junit
intellij-idea
benstpierre
источник
источник
Ответы:
Эта проблема возникает из-за того, что Android Platform (
android.jar
) уже содержит классы JUnit. Тестовый прогон IDEA загружает эти классы и видит, что они из старого JUnit, в то время как вы пытаетесь использовать аннотированные тесты, которые являются функцией нового JUnit, поэтому вы получаете ошибку от тестового бегуна.Решение простое, откройте
Project Structure
|Modules
|Dependencies
и двигайтеjunit-4.7.jar
вверх так, чтобы он был впередиAndroid 1.6 Platform
в classpath. Теперь бегущий тест будет счастлив, поскольку он загружает новую версию JUnit.источник
Class not found: "com.example.intellijgradletest.MainActivityTest"
Мой модуль является модулем библиотеки Java, поэтому изменение JRE до версии 1.8 решило проблему.
Или вы также можете сделать это глобально через «Настройки модуля»> «Расположение SDK»> «JDK», указав «Oracle JDK 8» вместо копии «Android SDK».
источник
~/Library/Preferences/AndroidStudioX.X/options/jdk.table.xml
илиC:\Users\Name\.AndroidStudioX.X\config\options\jdk.table.xml
в Windows. Найдите узел<name value="Android API 28 Platform" />
и установите его<annotationsPath>
в<root url="jar://$USER_HOME$/Android-SDK/platforms/android-28/data/annotations.zip!/" type="simple" />
. Также убедитесь, что<classPath>
узел содержитсяplatforms/android-28/...
в обоих URL-адресах файлов. Настройте «Android-SDK» на имя вашей папки.У меня была эта проблема с многомодульным проектом (libgdx). Один модуль - чистая Java и имеет тесты. Мое решение состояло в том, чтобы установить «использовать альтернативную JRE» на «Java 1.8» в конфигурации выполнения моих модульных тестов. Это гарантирует, что на пути к классам нет android.jar и используется раннер junit 4.x.
источник
Я получил ту же ошибку при создании обоих
Unit Test
иAndroid Instrument Test
в Android Studio 1.4+, и это начало сбиваться с толку. Чтобы избежать этой ошибки , убедитесь , что ваш тест класс подпадает подAndroid Tests
наRun/Debug Configurations
Test Artifact
вBuild Variants
установлен вAndroid Instrumentation Tests
Run
>Edit Configuration
Android Tests
а неJUnit
JUnit
просто удалите конфигурацию и щелкните правой кнопкой мыши на файле, который вы хотите проверить, иRun
снова. Затем он создаст конфигурацию вAndroid Tests
разделе и запустится на устройстве / эмуляторе.источник
test
папки вandroidTest
папку. После этого Android Studio не обновляла конфигурацию запускаДля Android Studio - начиная с Android Studio 1.1 Beta 4 , Google добавил поддержку плагина Android Gradle 1.1.0-RC . Новый плагин поддерживает юнит-тестирование через Android Studio с использованием junit 4+.
Это все еще эксперимент, и есть некоторые ручные шаги, чтобы настроить это.
источник
Для всех, кто читает этот пост и до сих пор имеет ту же проблему с AndroidStudio 1.0. Вы не можете изменить порядок зависимостей в AndroidStudio, если среда IDE перезаписывает их автоматически. И даже если вам удастся изменить порядок, изменив файл .iml, вы получите «класс не найден ...». Это связано с тем, что путь вывода теста не может быть установлен в AndroidStudio.
На самом деле, есть решение для совместной работы AndroidStudio, Junit и Robolectric. Взгляните на этот https://github.com/JCAndKSolutions/android-unit-test и используйте этот плагин: https://github.com/evant/android-studio-unit-test-plugin
У меня отлично работает.
источник
У меня та же ошибка, когда я создаю свой собственный пакет Junit
Чтобы исправить это, я добавил эти две строки в мой файл приложения, как описано здесь :
источник
Есть две вещи, которые я мог представить
источник
Это произошло и со мной в Android Studio 1.1 - хотя он должен поддерживать модульные тесты без плагина.
На других машинах (тот же проект, та же версия AS) я обнаружил, что при запуске модульных тестов среда IDE не добавляет файл android.jar в путь к классам, в то время как на моей машине это происходит.
Мое лучшее предположение состояло в том, что из-за преобразования, которое мы сделали из Maven в Gradle и перехода от intellij к AS, где-то на моей машине оставался некоторый кеш настроек, что привело к добавлению android.jar в classpath.
Я удалил все кэши, связанные с Android, с моего компьютера (в папке c: \ users \ USRE_NAME): .android .AndroidStudio .gradle .m2
После этого я снова открыл проект, и тесты сработали.
Все еще пытаюсь понять, что пошло не так, но сейчас это должно сработать.
источник
У меня была эта проблема в Android Studio 1.5, потому что я не знал, что мне пришлось переключить настройку «Тестировать артефакт» в «Вариантах сборки» (в левом нижнем углу главного окна) с «Тестов инструментария Android» на «Модульные тесты». ». Когда вы это сделаете, вы увидите файл ExampleUnitTest.java в окне проекта.
источник
У меня была такая же проблема, но по другой причине. Я был на IntelliJ с обычным проектом Java Gradle (не Android), но JDK был установлен на Android SDK в
Project Structure
(был JDK по умолчанию по некоторым причинам). Это действительно глупо, но IntelliJ не был достаточно хорош, чтобы указать мне, что случилось, поэтому я застрял на этом.источник
Вот как я это решил:
Изменить настройки -> Значения по умолчанию -> Android JUnit -> Добавить следующее в рабочий каталог:
$ MODULE_DIR $
источник
Для меня эта проблема была вызвана устаревшей / неработающей конфигурацией тестов. Я просто должен был удалить конфигурацию, затем создать новую, и проблема была исправлена.
источник
В проекте Android у меня было
minifyEnabled = true
, после того, как я изменил его, чтобыfalse
все работало.источник
Если вы удалите
от твоего
build.gradle
это будет работатьисточник
Перейдите в Структура проекта -> Настройка платформы, измените SDK на 1.8, и я решил мою проблему.
источник
Я также столкнулся с той же проблемой, после перехода в build.gradle у меня все работает нормально.
измените свою версию junit внутри build.gradle на:
источник
Я последовал за ответом CrazyCoder, но в зависимости не было показано ни одного файла junit. поэтому я скачал один из http://www.java2s.com/Code/Jar/j/Downloadjunitjar.htm , а затем добавил его, нажав кнопку «плюс» справа. И это сработало
источник
Отключение «Использовать встроенный JDK» в Project Structure / SDK Location - это то, что помогло в моем случае, но я точно не знаю, по какой причине он потерпел неудачу.
источник
Замените ваш android.jar в папке libs последней. Вы можете скачать его здесь
источник
В AndroidStudio
Open Project Structure -> SDK Location
вы можете увидетьJDK
местоположение, изменить использование «Использовать встроенный JDK» на свое собственное,JDK
чтобы применить его, а затем вернуться к «Использовать встроенный JDK» , возможно, это работаетисточник
В моем случае, изменения
JRE
вRun Configurations
дозе решить эту проблему, но когда я нажимаю кнопку запуска рядом с функцией тестирования, тоJRE
параметры будут сброшены по умолчанию.Наконец, аналогично ответу @CrazyLiu
Project Structure - SDK Location - JDK
, выберитеEmbedded JDK
. Потому что в Android Studio 3.6 нет флажка.источник
Я получил то же сообщение
простой ошибкой новичка. Я использовал те же имена пакетов и имена классов в src / main и src / test для класса (класс HomeController в моем случае):
При этом класс src / main HomeController, а также класс src / test HomeController имели одинаковый полный путь:
Результат: все тесты, которые зависели от класса HomeController, не прошли.
Либо изменение имени пакета и / или имени класса решило проблему. Вот пример, когда и имя пакета, и имя класса изменяются:
Теперь полные имена классов отличаются. Имя класса src / main HomeController:
и имя класса src / test HomeHontrollerTest:
С полностью определенными именами классов проблема исчезает.
источник