Android Espresso ActivityTest выдает «пакет android.support.test.rule не существует» - PullRequest
2 голосов
/ 10 июня 2019

Я изучаю TDD для Android с помощью этой демонстрации:

https://github.com/NileshJarad/TDD_Demo

Я могу запустить все модульные тесты и тесты Mockito, но «ActivityTests» не работает с этими ошибками:

error: package android.support.test.rule does not exist 
error: package android.support.test.espresso does not exist 
error: package android.support.test.espresso.action does not exist  
error: package android.support.test.espresso.action does not exist  
error: package android.support.test.espresso.action does not exist  
error: package android.support.test.espresso.assertion does not exist   
error: package android.support.test.espresso.matcher does not exist 
error: package android.support.test.espresso.matcher does not exist 
error: package android.support.test.espresso.matcher does not exist 
error: cannot find symbol class ActivityTestRule    
error: cannot find symbol method isDisplayed()  
...

Версии Android 9.0 API 28.

Я попробовал предложения на https://www.google.com/search?q=Android+ActivityTest+gives+%27package+android.support.test.rule+does+not+exist%27, но все они ссылаются на app/build.gradle строки, которые у нас уже есть:

...
        testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
...
dependencies {
...    
    testImplementation 'junit:junit:4.12'
    testImplementation 'org.mockito:mockito-core:1.10.19'
    androidTestImplementation 'com.android.support.test:rules:1.0.2'
    androidTestImplementation('androidx.test.espresso:espresso-core:3.1.0', {
        exclude group: 'com.android.support', module: 'support-annotations'
    })
    androidTestImplementation 'com.android.support.test:testing-support-lib:0.1'
}

1 Ответ

2 голосов
/ 13 июня 2019

Я думаю, что вам просто нужно изменить зависимость "правил" на версию AndroidX:

androidTestImplementation 'androidx.test:rules:1.2.0'

После синхронизации проекта вам нужно изменить свои тесты на использование androidx.test.* вместо android.support.test.* (что можно сделать, удалив серые операторы import, а затем просто приняв все новые импорты что предлагает Android Studio).

На этом этапе ваши тесты должны выполняться!

Еще одна вещь: теперь вы можете удалить аннотацию в верхней части тестового класса, в которой «AndroidJUnit4» помечен как устаревший (т.е. вычеркнут):

@RunWith(AndroidJUnit4.class)

Согласно документации , @RunWith теперь требуется только при использовании смеси JUnit3 и JUnit4 (чего нет в вашем тесте).

...