Итак, я получаю NoSuchMethodError
при запуске моих тестов Activity/Instrument из Android Studio, на кодовой строке, которая пытается вызвать метод в библиотечном модуле из модульного теста.Android Instrumentation test не находит классы из проекта библиотеки
Так что это мой тест:
public class MainActivityTest extends ActivityInstrumentationTestCase2 {
public void testMainActivity() {
final MainActivity target = (MainActivity) getActivity();
MyLibarary.someStaticMethod(); // yields java.lang.NoSuchMethodError
}
Что же здесь дело? Я определил свою библиотеку как «компилирую» -зависимость в build.gradle, и она компилируется просто отлично. Библиотека также вызывается из основных классов приложений без проблем. Только когда я вызываю это из тестов, он терпит неудачу. Мое приложение и мои тесты находятся в одном модуле.
Я попытался выполнить чистую задачу, выполнить сборкуДебуг и собрать задачиDebugTest вручную. Безрезультатно.
Структура проекта:
Root
|---MyApp
| |---src/main/...
| |---src/androidTest/...
|----MyLibrary
Запуск Android Студия v1.0.2 Gradle строить инструменты v1.0.0 Запуск в качестве "Test Android" на модуле "MyApp" из Run/Debug конфигурации AS с присвоенным Контрольно-измерительный прибор.
В Eclipse >> свойства проекта >> Android >> убедитесь, что проект, который вы тестируете, ссылается в разделе «Библиотека». 'is library' может оставаться непроверенным –
На самом деле это не называется ни одним из них - я анонимизировал код для SO. Но это не проблема - код не был бы скомпилирован, если бы у меня была синтаксическая ошибка. Он компилируется, но не работает. – Nilzor
Извините, я редактировал свой комментарий, пока вы отвечали. Большинство сообщений на эту тему говорят, что вы находите две версии библиотеки, один раз во время компиляции, а другой во время выполнения. –