Почему я не могу импортировать 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'