Почему я не могу импортировать AndroidJUnit4 и ActivityTestRule в свой модульный тестовый класс?

У меня возникли проблемы с импортом некоторых оболочек тестирования Android UI – я просто не могу понять, что происходит не так!

Это мой класс:

@RunWith(AndroidJUnit4.class) @LargeTest public class ExampleUnitTest { @Rule public ActivityTestRule<MainActivity> mActivityRule = new ActivityTestRule(MainActivity.class); @Test public void listGoesOverTheFold() { onView(withText("Hello world!")).check(matches(isDisplayed())); } 

}

Но по какой-то причине я получаю ошибки «не могу найти символ ActivityTestRule» и «не может найти символ AndroidJUnit4». Я попытался импортировать их, но их не найти.

Зависимости в build.gradle устанавливаются так:

 compile fileTree(dir: 'libs', include: ['*.jar']) testCompile 'junit:junit:4.12' compile 'com.android.support:appcompat-v7:23.4.0' androidTestCompile 'com.android.support:support-annotations:23.4.0' androidTestCompile 'com.android.support.test:runner:0.4' androidTestCompile 'com.android.support.test:rules:0.4' androidTestCompile 'com.android.support.test.espresso:espresso-core:2.2.1' androidTestCompile 'com.android.support.test.uiautomator:uiautomator-v18:2.1.2' 

Поэтому я думаю, что у меня есть все настройки зависимостей – я пробовал много вещей, но не повезло.

У кого-нибудь есть идеи?

Есть два разных типа тестов, которые вы можете настроить в Android

Единичные тесты

  • Они запускаются непосредственно на JVM и не имеют доступа к классам Android.
  • Они хранятся в пакете test/java
  • Зависимости необходимо добавить в файл build.gradle с помощью команды testCompile
  • Вы обычно используете Mockito, Robolectric & JUnit для этих тестов

Испытания инструментария

  • Они запускаются на эмуляторе Android и имеют полный доступ ко всем классам Android
  • Они хранятся в androidTest/java
  • Зависимости необходимо добавить в build.gradle с помощью androidTestCompile
  • Обычно вы используете Espresso и JUnit для этих тестов

Из того, что я могу сказать, вы пытаетесь написать контрольные тесты с помощью Espresso, но имеете свой тест в test/java пакете, который предназначен для модульных тестов. В этом случае вам нужно перенести свой тестовый класс в пакет androidTest/java .

Нужны эти добавления зависимостей

  testCompile 'com.android.support.test:rules:0.5' testCompile 'com.android.support.test:runner:0.5'