Как включить обработчик, обработанный обработчиком аннотации, для проверки класса пути в Java / Kotlin

У меня есть проект Android в процессе перехода с Java на Kotlin. В этом проекте у меня есть чистый модуль Kotlin, где я реализую API-клиент со следующим build.gradle:

apply plugin: 'kotlin' apply plugin: 'kotlin-kapt' dependencies { implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk8:${kotlin_version}" implementation "com.squareup.retrofit2:retrofit:${retrofit_version}" implementation "com.squareup.retrofit2:converter-gson:${retrofit_version}" implementation "com.google.code.gson:gson:${gson_version}" implementation "com.squareup.okhttp3:logging-interceptor:${okhttp_version}" implementation "io.reactivex.rxjava2:rxjava:${rx_java_version}" implementation "io.reactivex.rxjava2:rxkotlin:${rx_kotlin_version}" implementation "com.jakewharton.retrofit:retrofit2-rxjava2-adapter:${retrofit2_rxjava2_adapter_version}" compileOnly "javax.annotation:jsr250-api:${jsr250_version}" implementation "com.google.dagger:dagger:${dagger_version}" kapt "com.google.dagger:dagger-compiler:${dagger_version}" testImplementation "junit:junit:${junit_version}" testImplementation "org.mockito:mockito-core:${mockito_version}" testImplementation "org.hamcrest:hamcrest-junit:${hamcrest_version}" testImplementation "com.squareup.okhttp3:mockwebserver:${mockwebserver_version}" // Dependence injection kaptTest "com.google.dagger:dagger-compiler:${dagger_version}" } 

Для модульных тестов существует зависимость процессора аннотаций:

 kaptTest "com.google.dagger:dagger-compiler:${dagger_version}" 

Я могу видеть сгенерированные источники в каталоге build / generated / source / kapt / test, но они не видны источникам тестирования, то есть невозможно импортировать созданный DaggerUnitTestComponent для инъекции зависимостей, например. И у меня проблемы с этим.

Подобные вещи, которые я уже сделал с успехом в проекте Android, с помощью этого ответа StackOverflow и следующий фрагмент, добавленный в build.gradle, но для чистого проекта Kotlin / Java, он неприменим.

 android.applicationVariants.all { def aptOutputDir = new File(buildDir, "generated/source/apt/${it.unitTestVariant.dirName}") it.unitTestVariant.addJavaSourceFoldersToModel(aptOutputDir) } 

Можно сказать, что я использую Android Studio 3.0.1 и Kotlin 1.2.10. Источники библиотечного модуля Kotlin лежат на src / main / java и src / test / java.

Вы можете взглянуть на пример проекта Kotlin, который использует кинжал: (здесь)

Из того, что я вижу, источники тестов, которые используют сгенерированные классы, должны компилироваться просто отлично во время сборки Gradle, но среда IDE может не правильно их подбирать.

Попробуйте обновить Kotlin до более новой версии в проекте ( 1.2.10 должен справиться с этим). Если это не поможет, попробуйте использовать плагин idea как в приведенном выше примере, настроенном для тестовых источников, как показано ниже:

 apply plugin: 'idea' idea { module { testSourceDirs += file('build/generated/source/kapt/test') generatedSourceDirs += file('build/generated/source/kapt/test') } } 
Intereting Posts
Как использовать kotlin для определения класса приложения Android? Kotlin / Java – тестирование данных базы данных REST API Комната + кинжал 2. NPE Лучшая практика для преобразования java-кода, используемого для копирования файлов с файлами в кеш-папку в Android на Kotlin Изображение не отображается в Activity (это нормально в AppCompatActivity) Regex – слова соответствия, которые не являются строками Почему «как» в Котлине не бросили в этом случае Неразрешенная ссылка async в Котлине Поведение с функциями высшего порядка Котлина и интерфейсами с одним методом? Запуск контрольных тестов с значка игры в Android Studio запускает их как JUnit на JVM Как пропустить модели proguard, используемые retrofit2, которые находятся на базовом пакете? Kotlin на Android: наведите курсор на список Возможно ли вставить адаптер Recycler View с помощью кинжала 2.11 Функция для выражения лямбда В чем разница между Int и Integer в Котлине?