аннотацияПроцессор+androidTest+dagger2

Для инструментальных тестов у меня есть TestApplication, который создает TestComponent, но файл больше не создается (Error:/xxx/TestApplication.java:16: The import.xxx.DaggerTestApplicationComponent cannot be resolved). Я не могу определить первопричину. Я пробовал разные Android Studio (2.2, 2.1.2), разные плагины Gradle (2.2.0-alpha6, 5, 4) и разные версии кинжала (от 2.2 до 2.6).

Должен ли я использовать androidTestAnnotationProcessor? (раньше такого не было)

редактировать: чтобы использовать кинжал 2.6, нужно добавить classpath 'com.google.guava:guava:19.0'

обновление: возникла проблема с Module, поэтому Component не удалось создать. Однако, используя jack (даже с параметрами отладки), я не видел проблемы. На данный момент, возвращаясь к java 7, плагин gradle 2.1.2. Таким образом, не нужно указывать, какая версия гуавы и все последние библиотеки могут быть использованы (кинжал 2.6, масляный нож 8.2.1, apt 1.8)


comment
вы пытались сгенерировать его в командной строке? раньше была проблема с кинжалом и генерацией тестового файла, не уверен, что это все еще так   -  person njzk2    schedule 28.07.2016
comment
У меня нет ... Но я подозреваю, что это началось после включения jack   -  person mbmc    schedule 28.07.2016


Ответы (2)


У меня была такая же проблема с Dagger 2.9. compileDebugAndroidTestSources успешно завершилось, но Dagger*Component не было создано.

После борьбы около часа я остановился на этом вопросе и, наконец, с некоторыми экспериментами нашел решение:

Добавлять

androidTestAnnotationProcessor 'com.google.dagger:dagger-compiler:2.9'

и снова выполните compileDebugAndroidTestSources. Теперь исходники должны быть сгенерированы (возможно, вам придется временно закомментировать ссылки на ваш Dagger*Component, чтобы компиляция прошла успешно), если ваш график в порядке.

Если есть проблема с вашим графом (например, отсутствующие @Provides), теперь вы получите сообщение об ошибке (в отличие от предыдущего состояния без androidTestAnnotationProcessor, когда задача завершалась без ошибки, но источники не были сгенерированы)

<rant>

Раньше я любил Dagger, но время от времени с ним возникают какие-то странные проблемы, которые делают его большим риском для длинных коммерческих проектов. Кроме того, у них до сих пор нет приличной документации, что очень затрудняет его изучение новыми разработчиками. Вероятно, это не только вина Даггера, возможно, gradle и Android Studio имеют свою роль в проблемах, но я серьезно подумываю о том, чтобы сбросить его.

</rant>

person Ognyan    schedule 06.02.2017
comment
Если выполнить сборку, она не будет работать. Вызывает ли сборка задачи compileDebugAndroidTestSources? - person Sunnyday; 23.02.2018

В дополнение к ответу @Ognyan, имейте в виду, что DaggerTestApplicationComponent не генерируется, пока вы не создадите тест.

Чтобы создать тест, откройте ActivityTest.kt, щелкните правой кнопкой мыши общедоступный класс ActivityTest и выберите Run -> ActivityTest.kt.

введите здесь описание изображения

person Anoop M Maddasseri    schedule 22.02.2020