2014-04-26 4 views
2

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

!!! JUnit version 3.8 or later expected:

java.lang.RuntimeException: Stub!

Конечно я использую версию JUnit новее, чем 3,8 (4,11, на самом деле).

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

  • хода в зависимости JUnit, чтобы быть первым, как предложил где-то,
  • пытался Gradle трюки, такие как изменение sourceSets.instrumentationtest.setRoot, classpath, dependencies -> instrumentTestCompile, применить плагин: 'android-unit-test', но версия Gradle, включенная в мою версию Android Studio (0.5.7), не , похоже, распознает эти теги.

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

Любые идеи?

ответ

1

This run will fail with a complaint about “JUnit version 3.8 or later expected”. The reason for this is that jUnit 4 is too far down the classpath, and now comes perhaps the least elegant part of this setup: as Kostya Y explains, copy the whole contents of the console with the error message into a text editor and do this:

  1. Remove everything except -classpath “…”
  2. Move jUnit 4 to be the first thing in the classpath
  3. Add an entry for the absolute path to the robolectric test classes directory as the last item in the classpath, in this case /path/to/MyProject/app/build/classes/robolectric.

Now if you try re-running the configuration, you might get an UnsupportedClassVersionError if you’ve previously run the tests in console, or at least this happens to me on my Mac. I don’t know the actual root cause, but if this happens, just do Build > Clean Project to clear out previously built classes.

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

+0

Лично я решил, что это не стоит того времени и застрял на поддерживаемом Android-тесте, который работает на устройстве. Скорее всего, новая версия AS/gradle может нарушить эти обходные пути. Надеемся, что проблема скоро будет решена: https://code.google.com/p/android/issues/detail?id=65186 –

1

вот нить про robolectric + андроида студии, возможно, некоторые ответы будут помогать вам Android project with Robolectric and Gradle (Android studio)

Update:

Проблема с изменением пути к классам можно избежать, используя последнюю версию для Android-версии и установочные пути создания идеи с плагином идеи градации

apply plugin: 'idea'  
idea { 
    module { 
     outputDir = file('build/resources/testDebug') 
     testOutputDir = file('build/test-classes/debug') 
    } 
} 
Смежные вопросы