Не удается разрешить символ InstantTaskExecutorRule

Я открываю пример кода BasicRxJavaSample (из этой статьи Room + RxJava) Главное:

@Rule
public InstantTaskExecutorRule instantTaskExecutorRule = 
    new InstantTaskExecutorRule();

И BasicRxJavaSample все в порядке. Но я не могу применить это в своем тесте. Что происходит:

Не удается разрешить символ InstantTaskExecutorRule

enter image description here

И ручной импорт не работает:

enter image description here

Моя автозаполнение работает так enter image description here

Но должно быть так

enter image description here

Мое приложение 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'

Ответ 1

Замените testImplementation на androidTestImplementation. Так что тесты на папке androidTest могут иметь доступ к библиотеке.

dependencies {
    androidTestImplementation "android.arch.core:core-testing:1.1.1"
}

Ответ 2

Я знаю это поздно, но я хотел бы добавить одну вещь для этого принятого ответа, Если вы хотите использовать,

@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"

Ответ 3

для androidX миграции добавьте

androidTestImplementation "androidx.arch.core:core-testing:2.0.0"

Ответ 4

Пожалуйста, поместите эти две зависимости в свой файл 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

Ответ 6

Иногда проблемы с тестовой зависимостью могут быть связаны с выбором подходящего варианта сборки в зависимости от конфигурации Gradle. В моем случае тесты настроены только для варианта отладочной сборки.