Подтвердить что ты не робот

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

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

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

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

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

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

4b9b3361

Ответ 1

Есть два разных типа тестов, которые вы можете настроить в 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.

Ответ 2

Добавьте их в более новую версию:

androidTestImplementation 'com.android.support.test:rules:1.0.2'
androidTestImplementation 'com.android.support.test:runner:1.0.2'

Ответ 3

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

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

Ответ 4

Добавление:

androidTestImplementation 'com.android.support.test:rules:1.0.2'

решает проблему, но не забудьте синхронизировать проект с файлами Gradle. Только тогда изменения вступят в силу.

Ответ 5

Добавить зависимость.

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

Ответ 6

Если вы перешли на AndroidX, используйте это:

androidTestImplementation 'androidx.test:rules:1.1.1'
androidTestImplementation 'androidx.test:runner:1.1.1'