Как запустить Robolectric в Android Studio?

Я потратил несколько часов, пытаясь сделать Robolectric в Android Studio, но безуспешно, и я почти готов отказаться от него. Я получаю следующую ошибку:

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

java.lang.RuntimeException: заглушка!

Конечно, я использую версию junit новее 3.8 (действительно 4.11).

Я пробовал несколько трюков, найденных в других вопросах, связанных с этим, например:

  • переместите зависимость junit, чтобы она была первой, как где-то предлагалось,
  • попробовал трюки с градиентом, такие как изменение sourceSets.instrumentationtest.setRoot, пути к классам, зависимостей -> инструментTestCompile, применить плагин: «android-unit-test», но версия Gradle, включенная в мою версию Android Studio (0.5.7), не кажется распознавать эти теги.

Я даже загрузил примеры с GitHub, которые не даже не компилировать. Так что я очень устаю от этого.

Любые идеи?


person Luis    schedule 26.04.2014    source источник


Ответы (2)


Этот запуск завершится ошибкой с жалобой на «JUnit версии 3.8 или более поздней версии». Причина этого в том, что jUnit 4 находится слишком далеко в пути к классам, и теперь наступает, пожалуй, наименее элегантная часть этой установки: как объясняет Костя Y, скопируйте все содержимое консоли с сообщением об ошибке в текстовый редактор и сделайте это :

  1. Удалите все, кроме -classpath «…»
  2. Переместите jUnit 4 на первое место в пути к классам.
  3. Добавьте запись для абсолютного пути к каталогу тестовых классов robolectric в качестве последнего элемента пути к классам, в данном случае /path/to/MyProject/app/build/classes/robolectric.

Теперь, если вы попытаетесь повторно запустить конфигурацию, вы можете получить UnsupportedClassVersionError, если вы ранее запускали тесты в консоли, или, по крайней мере, это происходит со мной на моем Mac. Я не знаю фактической основной причины, но если это произойдет, просто выполните Build > Clean Project, чтобы очистить ранее созданные классы.

Источник: http://blog.futurice.com/android_unit_testing_in_ides_and_ci_environments

person Oleg Vaskevich    schedule 13.05.2014
comment
Лично я решил, что это не стоит потраченного времени, и остановился на поддерживаемом androidTest, работающем на устройстве. Скорее всего, более новая версия AS/gradle может сломать эти обходные пути. Надеюсь, проблема скоро будет решена: code.google.com/p/android. /issues/detail?id=65186 - person Oleg Vaskevich; 16.05.2014

вот тема о robolectric + android studio, возможно, некоторые ответы помогут вам Проект Android с Robolectric и Gradle (студия Android)

Обновление:

Проблему с модификацией пути к классам можно избежать, используя последнюю версию студии Android и настроив пути вывода идеи с помощью плагина gradle idea.

apply plugin: 'idea'    
idea {
    module {
        outputDir = file('build/resources/testDebug')
        testOutputDir = file('build/test-classes/debug')
    }
}
person nenick    schedule 15.05.2014