тестирование Android-инструментов: IllegalAccessError - PullRequest
4 голосов
/ 08 февраля 2012

Я получаю IllegalAccessError при выполнении инструментария Android тестов.
Это вывод Logcat:

java.lang.IllegalAccessError: Class ref in pre-verified class resolved to unexpected implementation

Это мои настройки:
TestProject tests UnderTestProject, который включает AnotherProject в пути сборки (на вкладке «Проекты») и экспортирует его из вкладки «Заказ и экспорт». Тестируемый класс принадлежит AnotherProject.

Я следовал предложению в этот вопрос о стекопереработке здесь для настройки пути сборки.

Сборки выполняются с использованием Maven из командной строки. AnotherProject находится в файле pom для TestProject и UnderTestProject, как зависимость. Это причина того, что вы все еще получаете ошибку? Как я могу это исправить? Включить AnotherProject в пом только для UnderTestProject и включить UnderTestProject в TestProject пом?

Как путь сборки затмения связан с помпой мавена?

Мне не ясно об этом, и любая помощь будет принята с благодарностью.

Спасибо!


Я попробовал следующее, и все еще получаю проблему:

  1. Удалено AnotherProject из помпа TestProject и добавлено UnderTestProject к нему.
  2. Следовал совету по этой теме. Мой UnderTestProject даже не собирается, если я добавлю <scope>provided</scope> для AnotherProject.

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

спасибо!

Ответы [ 3 ]

1 голос
/ 01 февраля 2013

У меня была такая же проблема. Чтобы исправить это для меня, мне пришлось добавить библиотечные зависимости в pom.xml основного приложения в pom.xml тестового приложения, но добавить к ним <scope>provided</scope>.

Так что, если у меня есть следующая зависимость в MyApp pom.xml:

<dependency>
    <groupId>com.nineoldandroids</groupId>
    <artifactId>library</artifactId>
    <version>2.4.0</version>
</dependency>

Мне пришлось добавить это в MyAppTest pom.xml:

<dependency>
    <groupId>com.nineoldandroids</groupId>
    <artifactId>library</artifactId>
    <version>2.4.0</version>
    <scope>provided</scope>
</dependency>
1 голос
/ 14 февраля 2012

Сначала следуйте разделу Библиотеки на вики-странице android-maven-plugin здесь :

Если в настройках вашего проекта есть библиотеки, их тоже нужно добавить как при условии , иначе они будут добавлены в тест, что приведет к дублированию ошибки «Класс ref в предварительно проверенном классе» разрешено к неожиданной реализации ».

... ...

Примечание. Ошибка # 142, на данный момент будут работать только библиотеки с jar .

Затем щелкните правой кнопкой мыши свой UnderTestProject, выберите Build Path -> Configure Path Build, отметьте Maven Dependencies на вкладке Order and Export: enter image description here

Это работает для меня, надеюсь, это поможет.

0 голосов
/ 20 ноября 2013

Вы не указали, является ли это проблемой только для Eclipse, или проект не может быть собран также с Maven (с использованием android-maven-plugin).В моем случае оба потерпят неудачу.Причина: транзитивные зависимости от UnderTestProject.apk также попадают в TestProject.apk, вызывая проблему класса pre-verified.Решением для меня было применить это в моем TestProject pom:

<dependency>
    <groupId>com.example</groupId>
    <artifactId>UnderTestProject</artifactId>
    <version>1.0-SNAPSHOT</version>
    <type>apk</type>
    <exclusions>
        <exclusion>
            <groupId>*</groupId>
            <artifactId>*</artifactId>
        </exclusion>
    </exclusions>
</dependency>

Использование таких символов подстановки, как обсуждено здесь , выдаст предупреждение, но получитработа выполнена прекрасно (проверено на Maven 3.1.1).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...