Полная трассировка стека выглядит следующим образом...
!!! 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
Убедитесь, что для Test Artifact in Build Variants установлено значение Android Instrumentation Tests
Нажмите меню Run > Edit Configuration
Убедитесь, что имя вашего класса / метода находится внутри Android Tests вместо JUnit
Если он включен, JUnit просто удалите конфигурацию и щелкните правой кнопкой мыши на файле, который вы хотите протестировать, и Run еще раз. Затем он создаст конфигурацию в разделе Android Tests и запустит ее на устройстве / эмуляторе.