Я пытаюсь перевести наше приложение на использование Espresso для тестирования пользовательского интерфейса, но я не могу заставить Gradle найти мои тесты на устройстве под управлением Android 4.4 (API 19, наша минимальная цель развертывания). Тесты на Android 6.0 (API 23) проходят нормально. Я добавил средство запуска JUnit и зависимости к app/build.gradle
в соответствии с это и это ( Я исключил аннотации из-за конфликта версий между модулями):
android {
...
defaultConfig {
...
testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner"
}
}
dependencies {
...
androidTestCompile("com.android.support.test.espresso:espresso-core:2.2.2") {
exclude module: 'support-annotations'
}
androidTestCompile("com.android.support.test:runner:0.5") {
exclude module: 'support-annotations'
}
androidTestCompile("com.android.support.test:rules:0.5") {
exclude module: 'support-annotations'
}
}
Затем я создал необходимую структуру каталогов app/src/androidTest/java/
, пакет com.companyname.appname
и класс Java EspressoTest.java
с некоторым тестовым кодом:
@RunWith(AndroidJUnit4.class)
public class EspressoTest {
@Rule
public ActivityTestRule<TermsOfUse> termsOfUseActivityTestRule = new ActivityTestRule<>(TermsOfUse.class);
@Test
public void iAmAtTouView() {
onView(withId(R.id.terms_of_use_content)).check(matches(isDisplayed()));
}
}
Если я щелкну правой кнопкой мыши тестовый класс EspressoTest
и выберу «Запустить EspressoTest», я получу сообщение об ошибке:
$ adb shell am instrument -w -r -e package com.companyname.appname -e debug false com.companyname.appname.qa.test/android.support.test.runner.AndroidJUnitRunner
Client not ready yet..
Started running tests
Test running failed: Instrumentation run failed due to 'Process crashed.'
Empty test suite.
Также, если я ввожу ./gradlew connectedAndroidTest
в командную строку, я получаю:
Starting 0 tests on GT-I9305 - 4.4.4
Tests on GT-I9305 - 4.4.4 failed: Instrumentation run failed due to 'Process crashed.'
com.android.builder.testing.ConnectedDevice > No tests found.[GT-I9305 - 4.4.4] FAILED
No tests found. This usually means that your test classes are not in the form that your test runner expects (e.g. don't inherit from TestCase or lack @Test annotations).
:app:connectedAuditDebugAndroidTest FAILED
FAILURE: Build failed with an exception.
* What went wrong:
Execution failed for task ':app:connectedAuditDebugAndroidTest'.
> There were failing tests. See the report at:
...
Поэтому мне кажется, что Gradle не распознает мой тестовый класс при попытке выполнить тестовые задачи на устройстве Android. Как я могу это исправить?