2015-12-16 1 views
3

Quelqu'un at-il une idée de la raison pour laquelle je ne peux pas utiliser MultiDexTestRunner?Essayer de tester un module Android dans l'application MultiDex, com.android.test.runner.MultiDexTestRunner n'est pas reconnu

Instrumentation runner class not specified

mon build.gradle contient:

android { 
    ... 
    defaultConfig { 
     ... 
     multiDexEnabled true 

     testInstrumentationRunner 'com.android.test.runner.MultiDexTestRunner' 
    } 

dependencies { 
... 
    // Testing-only dependencies 
    androidTestCompile 'com.android.support.test:runner:0.4.1' 
    androidTestCompile 'com.android.support.test:rules:0.4.1' 
    androidTestCompile 'junit:junit:4.12' 

plug-in Android de Gradle est la version 2.0.0-alpha2 (com.android.tools.build:gradle:2.0.0-alpha2)

//Runs all unit tests. 
@RunWith(Suite.class) 
@Suite.SuiteClasses({ACLTest.class}) 
public class UnitTestSuite { 

    public UnitTestSuite() {} 
} 

classe test:

@RunWith(AndroidJUnit4.class) 
@MediumTest 
public class ACLTest { 

    static Context context; 

    public ACLTest() { 
    } 

    @BeforeClass 
    public static void setUpBeforeClass() { 
     ... 
     context = InstrumentationRegistry.getTargetContext(); 
    } 

    @Before 
    public void setUpBeforeTest() throws Exception { 
     ... 
    } 


    @After 
    public void tearDown() throws Exception { 
     ... 
    } 

    @Test 
    public void aAGetInstance() throws Exception { 
     ... 
    } 
} 
+0

Peut-être que votre application doit étend MultiDexApplication de lib Dex-support>? –

+0

@OrestSavchak l'application le fait déjà. Mais ce que j'essaie de faire est d'utiliser des tests unitaires dans l'un des modules du projet. –

Répondre

5

Je résolu mon problème en mettant en place une extension android.support.test.runner.AndroidJUnitRunner et passer outre onCreate

public class MultiDexAndroidJUnitRunner extends AndroidJUnitRunner { 
    @Override 
    public void onCreate(Bundle arguments) { 
     //To make it work on MultiDex environment. 
     //https://plus.google.com/+OleksandrKucherenko/posts/i7qZdVEy3Ue 
     MultiDex.install(getTargetContext()); 

     super.onCreate(arguments); 
    } 
} 
+0

Cool. Mais comment l'utiliser? J'essaie de l'utiliser dans l'annotation @RunWith, mais cela ne fonctionne pas/ – tse

+1

J'ai trouvé. J'ai besoin de le mettre dans testInstrumentationRunner dans build.gradle. – tse

+2

Je suis dans le même contexte, mais avec Espresso, et cela ne résout pas le problème: j'obtiens un: app: transformClassesWithMultidexlistForDebugAndroidTest FAILED. Un indice? @tse – Anthony