2

Je suis un test unitaire de mon application MVP Android et je ne peux pas exécuter de tests unitaires Robobelectric sur mon système. Tout test utilisant Roboelectric ne répond pas et reste bloqué pour toujours.Les tests de l'unité Roboelectric ne répondent pas

Par exemple, le test suivant exécute toujours:

import static com.google.common.truth.Truth.assert_; 

@RunWith(RobolectricGradleTestRunner.class) 
@Config(constants = BuildConfig.class, sdk = 23) 
public class FakeTest { 

    @Test 
    public void testShouldFail() { 

     assert_().fail("Fail!"); 
    } 
} 

Android Studio affiche seulement une icône de rotation indéfiniment sur un test Roboelectric. L'exécution des tests à partir de gradle dans le terminal se bloque également mais ne montre aucun indicateur. enter image description here

Voici ce que mes build.gradle dépendances de tests ressemblent:

// Unit testing 
testCompile(
     'junit:junit:4.12', 
     'org.mockito:mockito-core:1.10.19', 
     'com.google.truth:truth:0.28' 
) 
// Roboelectric 3.1-SNAPSHOT is the latest that supports API 23 
testCompile('org.robolectric:robolectric:3.1-SNAPSHOT') { 
    exclude group: 'commons-logging' 
    exclude group: 'org.apache.httpcomponents' 
} 

Informations système:

OSX: 10.11.4

Android Studio: 2.0.0-rc2

JDK: 1.8.0_40

SDK Android: 23

Gradle Outils: 2.0.0-rc2

Roboelectric: 3.1-SNAPSHOT

Gradle: 2.10

Je suis complètement déconcerté. Il n'y a pas de sortie de débogage de Roboelectric qui dit que quelque chose ne va pas. Toute aide serait appréciée.

+0

Ainsi, tout test est suspendu. Si vous l'exécutez à partir de la ligne de commande, voyez-vous le même comportement? –

+0

Oui. Je l'ai mentionné dans le PO. – plast

+0

'2.0.0' est maintenant sorti. Aussi, faites attention à l'instantané robolectric. –

Répondre

2

Pour moi le problème était AndroidDevMetrics. Si vous désactivez l'activiyMetrics cela fonctionne très bien.

AndroidDevMetrics.Builder androidDevMetricsBuilder = 
      new AndroidDevMetrics.Builder(this) 
       .enableActivityMetrics(!isRoboUnitTest()) 
       .enableDagger2Metrics(true) 
       .showNotification(true); 
     AndroidDevMetrics.initWith(androidDevMetricsBuilder); 

public static boolean isRoboUnitTest() { 
    return "robolectric".equals(Build.FINGERPRINT); 
    } 
+0

J'ai fini par désactiver totalement AndroidDevMetrics dans mes tests en écrivant un wrapper autour d'elle et en injectant une version non-op dans mes tests. – plast