Intereting Posts
Более простой способ получить идентификатор (строку) представления по его идентификатору (int) Как конвертировать android.net.Uri в java.net.URL? Управление onclicklistener в текстовом режиме с поддержкой autolink Какова хорошая стратегия при работе с Proguard, MultiDex, Testing и Product Flavors? Org.w3c.dom.Node.insertBefore: NullPointerException, ошибка? Поддержка протокола SCTP в android Преобразование холста в растровое изображение в android PagerTitleStrip не отображает заголовки на первой странице отображения, заголовки выводятся только после прокрутки на другую страницу Предварительный просмотр комплекта дизайна Unity3D + Glass Ароматизаторы продуктов для Android Gradle Экран ускорителя эмулятора intel x86 (установщик HAXM) версии 6.0.5 показывает, что он несовместим с окнами Невозможно отправить приглашение через Google AppInvites Исходный код APK Android: исключение из памяти в галерее Android: поворачивайте изображение, не загружая его в память.

Сохраняйте определенный порядок зависимостей для Android Studio

Я пытаюсь запустить модульные тесты с помощью Robolectric в Android Studio. Я почти там, я вижу:

!!! 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:185) ... 

Я также вижу все необходимые зависимости в пути к классам. Чтобы исправить эту ошибку, мне нужно установить зависимость junit4 до зависимостей sdk от android. К сожалению, я не вижу модуль в разделе « Структура проекта », и я не знаю, как отредактировать файл iml для его архивирования.

Вот скриншот из моей структуры проекта: Введите описание изображения здесь

Мой файл градиента:

 sourceSets { testLocal { java.srcDir file('src/test/java') resources.srcDir file('src/test/resources') } } dependencies { // compatibility compile 'android.compatibility:android-support:v4-r13' compile 'com.actionbarsherlock:actionbarsherlock:4.4.0@aar' testLocalCompile 'junit:junit:4.11' testLocalCompile 'org.robolectric:robolectric:2.2' testLocalCompile 'org.easytesting:fest-assert-core:2.0M10' } android { buildToolsVersion "17" compileSdkVersion 18 productFlavors { testLocal{ } } } 

И я выбрал testLocal аромат в AS.

Проблема, похоже, связана с тем, как Android Studio перезаписывает файлы .iml. В соответствии с поворотными / robolectric / deck-gradle devs:

ПРИМЕЧАНИЕ. Android Studio агрессивно переписывает список зависимостей (ваш .iml-файл) и подрывает используемую выше технику, чтобы получить SDK Android в нижней части пути к классам. Вы получите страшный Stub! Исключение при каждом повторном открытии проекта (и, возможно, чаще). По этой причине в настоящее время мы рекомендуем IntelliJ; Мы надеемся, что это может быть решено в будущем.

Источник: https://github.com/robolectric/deckard-gradle

Видимо, вы можете редактировать эти файлы вручную, но AS будет переписывать их каждый раз, когда вы синхронизируете проект. В качестве альтернативы (состояние дефрагментации в палитре) вы можете использовать IntelliJ IDEA для более стабильного решения.

В настоящее время это также долгое обсуждение группы Robolectric Google:
https://groups.google.com/forum/#!topic/robolectric/xsOpEwtdTi4

Надеемся, что команда AS исправит это в ближайшее время. Запуск Robolectric и Espresso вместе станет огромным шагом вперед для тестирования на Android.

С Android Studio 0.5.7 можно поддерживать порядок зависимостей через диалог «Структура проекта» или просто помещать строку « androidTestCompile 'junit:junit:4.+' в разделе dependencies fo.

Однако этого недостаточно для запуска тестов внутри Android Studio. Новая ошибка:

 Exception in thread "main" java.lang.NoClassDefFoundError: junit/textui/ResultPrinter at java.lang.Class.forName0(Native Method) at java.lang.Class.forName(Class.java:190) at com.intellij.rt.execution.application.AppMain.main(AppMain.java:116) Caused by: java.lang.ClassNotFoundException: junit.textui.ResultPrinter at java.net.URLClassLoader$1.run(URLClassLoader.java:366) at java.net.URLClassLoader$1.run(URLClassLoader.java:355) at java.security.AccessController.doPrivileged(Native Method) at java.net.URLClassLoader.findClass(URLClassLoader.java:354) at java.lang.ClassLoader.loadClass(ClassLoader.java:425) at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308) at java.lang.ClassLoader.loadClass(ClassLoader.java:358) ... 3 more 

Таким образом, похоже, что моя junit-зависимость не распространяется на junit run. Я пытаюсь заставить его работать дальше

Android Studio не имеет экрана зависимостей, например, IntelliJ. Пока Google не установит, что у меня есть обходное решение, которое я придумал. Вы можете прочитать об этом на моем блоге. Надеюсь это поможет.