Ответ 1
Замените testImplementation на androidTestImplementation. Так что тесты на папке androidTest могут иметь доступ к библиотеке.
dependencies {
androidTestImplementation "android.arch.core:core-testing:1.1.1"
}
Я открываю пример кода BasicRxJavaSample (из этой статьи Room + RxJava) Главное:
@Rule
public InstantTaskExecutorRule instantTaskExecutorRule =
new InstantTaskExecutorRule();
И BasicRxJavaSample все в порядке. Но я не могу применить это в своем тесте. Что происходит:
Не удается разрешить символ InstantTaskExecutorRule
И ручной импорт не работает:
Моя автозаполнение работает так
Но должно быть так
Мое приложение build.gradle(полный град здесь):
// tests
testImplementation 'junit:junit:4.12'
androidTestCompile "com.android.support:support-annotations:$supportVersion"
testImplementation "android.arch.core:core-testing:$archVersion"
// Test helpers for Room
testImplementation "android.arch.persistence.room:testing:1.0.0"
// https://github.com/mockito/mockito
testImplementation 'org.mockito:mockito-core:2.13.0'
androidTestImplementation 'org.mockito:mockito-android:2.13.0'
// AndroidJUnitRunner and JUnit Rules
androidTestImplementation 'com.android.support.test:rules:1.0.1'
androidTestImplementation 'com.android.support.test:runner:1.0.1'
// https://developer.android.com/topic/libraries/testing-support-library/packages.html
androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.1'
androidTestCompile 'com.android.support.test.espresso:espresso-idling-resource:3.0.1'
Замените testImplementation на androidTestImplementation. Так что тесты на папке androidTest могут иметь доступ к библиотеке.
dependencies {
androidTestImplementation "android.arch.core:core-testing:1.1.1"
}
Я знаю это поздно, но я хотел бы добавить одну вещь для этого принятого ответа, Если вы хотите использовать,
@Rule
public InstantTaskExecutorRule instantTaskExecutorRule =
new InstantTaskExecutorRule();
в своем тестовом примере JUnit, т.е. в тестовой папке, затем используйте следующую зависимость, т.е. с testImplementation
dependencies {
testImplementation "android.arch.core:core-testing:1.0.0"
}
Если вы хотите использовать InstantTaskExecutorRule
для своего пользовательского интерфейса или интеграционных тестовых случаев, используйте androidTestImplementation. то есть:
androidTestImplementation "android.arch.core:core-testing:1.0.0"
И если вы хотите добавить оба варианта, используйте androidTestImplementation & testImplementation, то есть:
androidTestImplementation "android.arch.core:core-testing:1.0.0"
testImplementation "android.arch.core:core-testing:1.0.0"
для androidX миграции добавьте
androidTestImplementation "androidx.arch.core:core-testing:2.0.0"
Пожалуйста, поместите эти две зависимости в свой файл gradle,
dependencies {
// Test helpers for LiveData
testImplementation "android.arch.core:core-testing:1.0.0"
// Test helpers for Room
testImplementation "android.arch.persistence.room:testing:1.0.0"
}
Дополнительная информация, пожалуйста, перейдите по этой ссылке, руководство по интеграции компонентов архитектуры Android
Я думаю, что в некоторых связанных библиотеках есть конфликт. Я обошел это, я использовал blockingGet() и blockingFirst().
и, в конце концов, я использовал https://developer.android.com/training/testing/junit-runner.html#using-android-test-orchestrator
androidTestUtil 'com.android.support.test:orchestrator:1.0.1'
это то, что вам нужно!
Иногда проблемы с тестовой зависимостью могут быть связаны с выбором подходящего варианта сборки в зависимости от конфигурации Gradle. В моем случае тесты настроены только для варианта отладочной сборки.