ApplicationTestCase устарел на уровне API 24
Я создал пустой проект по умолчанию на Android Studio 2.1.2 с API 24. В примере проекта Google предлагает обесценившийся класс ApplicationTestCase:
Этот класс устарел на уровне API 24. Использовать ActivityTestRule вместо. Новые тесты должны быть написаны с помощью Android Testing Support Библиотека.
Пример:
import android.app.Application;
import android.test.ApplicationTestCase;
/**
* <a href="#" onclick="location.href='http://d.android.com/tools/testing/testing_android.html'; return false;">Testing Fundamentals</a>
*/
public class ApplicationTest extends ApplicationTestCase<Application> {
public ApplicationTest() {
super(Application.class);
}
}
Мой вопрос: Почему Android Test Case теперь устарел? Как заменить ApplicationTestCase на ActivityTestRule?
EDIT:
Я пытаюсь использовать Expresso, но в API 24 (compileSdkVersion 24
) У меня есть эта ошибка:
Error:Conflict with dependency 'com.android.support:appcompat-v7'. Resolved versions for app (24.0.0) and test app (23.1.1) differ. See http://g.co/androidstudio/app-test-app-conflict for details.
Error:Conflict with dependency 'com.android.support:design'. Resolved versions for app (24.0.0) and test app (23.1.1) differ. See http://g.co/androidstudio/app-test-app-conflict for details.
Error:Conflict with dependency 'com.android.support:support-annotations'. Resolved versions for app (24.0.0) and test app (23.1.1) differ. See http://g.co/androidstudio/app-test-app-conflict for details.
Error:Conflict with dependency 'com.android.support:recyclerview-v7'. Resolved versions for app (24.0.0) and test app (23.1.1) differ. See http://g.co/androidstudio/app-test-app-conflict for details.
Когда я пытаюсь добавить эту lib в мой build.gradle:
// Android JUnit Runner
androidTestCompile 'com.android.support.test:runner:0.5'
// JUnit4 Rules
androidTestCompile 'com.android.support.test:rules:0.5'
// Espresso core
androidTestCompile 'com.android.support.test.espresso:espresso-core:2.2.2'
// Espresso-contrib for DatePicker, RecyclerView, Drawer actions, Accessibility checks, CountingIdlingResource
androidTestCompile 'com.android.support.test.espresso:espresso-contrib:2.2.2'
// Espresso-web for WebView support
androidTestCompile 'com.android.support.test.espresso:espresso-web:2.2.2'
// Espresso-idling-resource for synchronization with background jobs
androidTestCompile 'com.android.support.test.espresso:espresso-idling-resource:2.2.2'
Мой вывод заключается в том, что на данный момент ни Android Test Case, ни Expresso не работает в Android API 24. Правильно ли это?
EDIT: 2016-08-05
Я исправляю предыдущую ошибку на Expresso следующим образом:
def espressoVersion = '2.2.2'
def testRunnerVersion = '0.5'
androidTestCompile "com.android.support.test:rules:${testRunnerVersion}"
androidTestCompile "com.android.support.test.espresso:espresso-core:${espressoVersion}"
configurations.androidTestCompile.dependencies.each { androidTestCompileDependency ->
androidTestCompileDependency.exclude group: 'com.android.support'
}
Ответы
Ответ 1
Новый пример androidTest, который генерирует бета-версия Android Studio 2.2, выглядит следующим образом:
@RunWith(AndroidJUnit4.class)
public class ExampleInstrumentedTest {
@Test
public void useAppContext() throws Exception {
// Context of the app under test.
Context appContext = InstrumentationRegistry.getTargetContext();
assertEquals("org.mypackage", appContext.getPackageName());
}
}
Также, как и предупреждение о признании усталости, новые контрольно-измерительные тесты должны использовать InstrumentationRegistry
вместо расширения от AndroidTestCase
. Запустите их с помощью AndroidJUnit4
.
Соответствующий раздел dependencies
в build.gradle
выглядит следующим образом:
androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', {
exclude group: 'com.android.support', module: 'support-annotations'
})