Довольно странная проблема: Mackito deps выглядят сломанными, хотя они на самом деле работают.
Почему это происходит и как это исправить?

Во всплывающей подсказке об этих ошибках указано «неразрешенная ссылка».
Некоторые сведения :
- Это юнит-тесты (под
app/src/test
), а не Android тестирование КИПиА. - Это происходит только тогда, когда тест Kotlin , В эквивалентном тесте Java в Mockito Studio все отлично отображается в Android Studio.
- Повторяю, , хотя материал Mockito показан красным, он все равно работает : тест компилируется и передает, как в командной строке, так и в Android Studio.
В build.gradle
, в dependencies
:
testImplementation 'junit:junit:4.12'
testImplementation 'org.mockito:mockito-core:2.19.0'
// ...
implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:1.3.50"
(Также у меня есть файл с именем org.mockito.plugins.MockMaker
, содержащий mock-maker-inline
, , так что Mockito работает с окончательными Kotlin классами .)
Редактировать: не должно быть релевантным, но для Android контрольно-измерительные приборы, есть и это. (У меня были некоторые проблемы с обновлением до Mockito 2 ранее, поэтому придерживался 1.10.19 там.)
// Here keeping older Mockito for now
androidTestImplementation 'org.mockito:mockito-core:1.10.19'
// dexmaker needed for Mockito to work in androidTest
androidTestImplementation 'com.google.dexmaker:dexmaker:1.2'
androidTestImplementation 'com.google.dexmaker:dexmaker-mockito:1.2'
Использование Android Studio 3.5.3
То, что я пробовал
- Повторная синхронизация c проекта (
build.gradle
) - Выполнение
clean
Задача Gradle внутри AS - Закройте проект и снова откройте его
- Выйти Android Студия полностью и открыть ее снова
Обновление
Я думаю, это связано с несколькими версиями Mockito , присутствующими в проекте ,
Когда я нажимаю Cmd на имена, показанные красным, это приводит меня к источникам в mockito-core-1.9.5-sources.jar
; но когда я нажимаю Cmd на ArgumentMatchers или MockitoJUnitRunner, это приводит меня к mockito-core-2.19.0-sources.jar
, правильному.

Я исследовал с помощью app:dependencies
, и единственная ссылка на Mockito 1.9.5 - через dexmaker-mockito.
+--- com.google.dexmaker:dexmaker-mockito:1.2
| +--- com.google.dexmaker:dexmaker:1.2
| \--- org.mockito:mockito-core:1.9.5 -> 1.10.19 (*)
Но поскольку зависимость от dexmaker распространяется только на androidTest
, она не должна влиять на что-либо при test
, верно ...? 1080
Редактировать: действительно, androidTest
Депс каким-то образом запутал Android Studio; закомментирование всех депов mockito и dexmaker в androidTestImplementation
убрало подсвеченные ошибочные ошибки (но, как уже упоминалось, другая версия использовалась по причине).
В итоге Android Обновление Studio исправило это .