ApplicationTestCase obsoleto en el nivel 24 de API
He creado un proyecto vacío predeterminado en Android Studio 2.1.2 con API 24 . En el proyecto de ejemplo, Google ofrece una clase depreciada ApplicationTestCase :
Esta clase ha quedado obsoleta en el nivel 24 de API. En su lugar, use ActivityTestRule. Las nuevas pruebas se deben escribir usando la Biblioteca de soporte de pruebas de Android.
- Destruye y reinicia la actividad con la biblioteca de soporte de pruebas
- Cómo generar html informe con gradle 1.12?
- ¿Por qué no hay instrumentación de prueba para BroadcastReceiver?
- Escribir / crear archivos dentro del contexto de la instrumentación de Android
- Pruebas de facturación en la aplicación con cuentas de prueba
Muestra:
import android.app.Application; import android.test.ApplicationTestCase; /** * <a href="http://d.android.com/tools/testing/testing_android.html">Testing Fundamentals</a> */ public class ApplicationTest extends ApplicationTestCase<Application> { public ApplicationTest() { super(Application.class); } }
Mi pregunta: ¿Por qué Android Test Case está ahora obsoleto? Cómo reemplazar ApplicationTestCase por ActivityTestRule?
EDITAR:
Intento con Expresso , pero en API 24 ( compileSdkVersion 24
) Tengo este error:
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.
Cuando intento agregar esta lib en mi 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'
Mi conclusión es que, por el momento, ni Test Case de Android ni Expresso funciona en Android API 24 . ¿Es esto correcto?
EDIT: 2016-08-05
Puedo corregir el error anterior en Expresso así:
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' }
- Prueba de Android fuera del espacio de almacenamiento
- ¿Cómo puedo obtener identificadores, nombres o rutas x para elementos ui utilizados en una aplicación para móviles (Android / iOS) para pruebas de automatización móvil?
- IsolatedContext vs AndroidTestCase.getContext ()
- ClassNotFoundException durante el instrumento de prueba de Android
- Java.lang.RuntimeException: ¡Stub! - ¿Cobertura de código de Android?
- Soft teclado no está presente, no se puede ocultar el teclado - Appium android
- Java y la metodología de prueba de Android
- ¿Cómo puedo ejecutar una sola prueba con gradle android
El nuevo ejemplo de androidTest que genera la versión beta de Android Studio 2.2, se parece a esto:
@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()); } }
Al igual que sugiere la advertencia de depreciación, las nuevas pruebas de instrumentación deben utilizar InstrumentationRegistry
lugar de extender desde AndroidTestCase
. Ejecutarlos con AndroidJUnit4
.
La sección de dependencies
relevantes en build.gradle
tiene este aspecto:
androidTestCompile('com.android.support.test.espresso:espresso-core:2.2.2', { exclude group: 'com.android.support', module: 'support-annotations' })
- Recuperar imagen de Picasa para subirla desde la galería
- PopupWindow – no funciona en algunos dispositivos