support - Android Espresso no funciona con Multidex da "No se encontraron pruebas"
error cannot fit requested classes in a single dex file(# methods 66947 65536 (1)
Mis pruebas de Espresso se estaban ejecutando hasta que tuve que soportar multidex.
Mi build.gradle, tengo
minSdkVersion 14
targetSdkVersion 23
multiDexEnabled = true
testInstrumentationRunner "com.android.test.runner.MultiDexTestRunner"
androidTestCompile ''com.android.support.test.espresso:espresso-core:2.2.1''
androidTestCompile ''com.android.support.test.espresso:espresso-contrib:2.2.1''
androidTestCompile ''com.android.support.test:runner:0.4.1''
androidTestCompile ''com.android.support.test:rules:0.4.1''
dexOptions {
jumboMode true
javaMaxHeapSize "4g"
incremental true
}
Test1AuthenticationEspressoTest
@RunWith(AndroidJUnit4.class)
@SmallTest
public class Test1AuthenticationEspressoTest {
@Rule
public ActivityTestRule<WelcomeActivity> mActivityRule = new ActivityTestRule(WelcomeActivity.class);
}
Aquí está el error que recibo
junit.framework.AssertionFailedError: No se encontraron pruebas en com.livestrong.tracker.test.Test1AuthenticationEspressoTest
Cualquier ayuda será apreciada. ¿Alguno tiene espresso trabajando con multidex?
Tenía este mismo problema y resulta que necesitas crear un corredor personalizado que habilite MultiDex y se extienda desde AndroidJUnitRunner. A continuación, debe establecer ese corredor como su testInstrumentationRunner en el build.gradle, y como su corredor en su configuración de ejecución. No es necesario modificar la clase de prueba (mantenga @RunWith(AndroidJunit4.class)
).
Aquí hay un paso a paso de qué hacer:
Crea una clase para tu corredor personalizado:
package com.bla.bla.bla; // your package import android.os.Bundle; import android.support.multidex.MultiDex; import android.support.test.runner.AndroidJUnitRunner; public class CustomTestRunner extends AndroidJUnitRunner { @Override public void onCreate(Bundle arguments) { MultiDex.install(getTargetContext()); super.onCreate(arguments); } }
En su build.gradle, establezca el corredor a su corredor personalizado:
android { // ... defaultConfig { // ... testInstrumentationRunner "com.bla.bla.bla.CustomTestRunner" } }
En su configuración de ejecución, asegúrese de que el corredor de instrumentación también esté configurado para el mismo corredor. . Nota: este paso no debería ser necesario en Android Studio 3.x y quizás también en algunas versiones anteriores. Esta opción ya no existe.
Usando lo anterior, pude ejecutar pruebas de Espresso en nuestra aplicación habilitada para múltiples dex.
Debo tener en cuenta que en muchas otras publicaciones en la red relacionadas con este tema, sugiera configurar su corredor como com.android.test.runner.MultiDexTestRunner
y elimine algunas dependencias en com.android.support:multidex-instrumentation:1.0.1
1.0.0 en su compilación. gradle Parece que esa solución ya no es el caso y no funciona a partir de gradle 1.5.0. Si tienes alguno de esos elementos, evitará que funcione lo anterior. Ver los comentarios en este post de desbordamiento de pila para más información.