try support supplying studio single requested method fit exceed error compile classes cannot 64k android android-espresso android-multidex

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:

  1. 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); } }

  2. En su build.gradle, establezca el corredor a su corredor personalizado:

    android { // ... defaultConfig { // ... testInstrumentationRunner "com.bla.bla.bla.CustomTestRunner" } }

  3. 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.