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

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

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

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

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

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

5 ответов


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

Тесты

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

Измерительные Тесты

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

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


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

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

нужно это добавить зависимости

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

добавляем:

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

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


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

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