Проблемы с Android kotlin mockMaker - PullRequest
0 голосов
/ 21 мая 2018

Привет, я пытаюсь смоделировать последний класс (так как все классы в kotlin по умолчанию являются окончательными) и добавил следующие зависимости в моем gradle:

testImplementation 'junit:junit:4.12'
testImplementation 'au.com.dius:pact-jvm-consumer-junit_2.11:3.5.10'
testImplementation "org.mockito:mockito-android:2.13.0"
testImplementation 'org.mockito:mockito-inline:2.13.0'
testImplementation "org.mockito:mockito-core:2.13.0"
//testImplementation 'io.mockk:mockk:1.8'
testImplementation 'org.assertj:assertj-core:3.8.0'

androidTestImplementation 'com.android.support.test:runner:1.0.2'
androidTestImplementation 'com.android.support.test:rules:1.0.2'
androidTestImplementation 'junit:junit:4.12'
androidTestImplementation "org.mockito:mockito-core:2.13.0"
androidTestImplementation "org.mockito:mockito-android:2.13.0"
androidTestImplementation 'org.mockito:mockito-inline:2.13.0'
androidTestImplementation "com.android.support.test.espresso:espresso-intents:3.0.2"

предполагается, что mockito-inline позволяет вамчтобы издеваться над последним классом kotlin, и поэтому я добавил и в мой тестовый модуль java, и в свой инструментальный тест, используя testImplementation and androidTestImplementation

При создании проекта я получаю следующую ошибку:

More than one file was found with OS independent path 'mockito-extensions/org.mockito.plugins.MockMaker'

Anyидеи что происходит?если я удаляю androidTestImplementation из встроенного mockitio, он компилируется нормально, но при запуске встроенного теста я получаю ошибку mockito, говорящую, что он не может издеваться над финальным классом.

Ответы [ 3 ]

0 голосов
/ 22 мая 2018

Согласно этому ответу нельзя смоделировать окончательные классы в androidTest - это ограничение объясняется в трекере проблем с Mockito Github здесь :

На данный момент нет реальной возможности заставить эту [насмешку над финальными классами] работать в Android, так как в ней отсутствует API инструментария, поверх которого мы работаем.Виртуальная машина Android не является стандартной виртуальной машиной и реализует только подмножество спецификации Java.Пока Google не решит расширить свою JVM, я боюсь, что эта функция не будет работать.

0 голосов
/ 12 декабря 2018

В моем случае я получил эту ошибку, потому что я использую implementation "org.mockito:mockito-inline:2.13.0" вместо testImplementation "org.mockito:mockito-inline:2.13.0"

0 голосов
/ 21 мая 2018

Чтобы иметь возможность макетировать последние классы в Kotlin, вам нужно создать файл org.mockito.plugins.MockMaker (буквально), содержащий только эту строку

mock-maker-inline

и поместить его в test/resources/mockito-extensions.

Для получения дополнительной информации, пожалуйста, прочитайте https://antonioleiva.com/mockito-2-kotlin/.

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