web-dev-qa-db-fra.com

Android Studio "Aucun test n'a été trouvé"

Quelqu'un a-t-il réussi à exécuter des tests dans Android Studio (à partir de l'interface graphique et non du terminal)? Je n'ai pas pu exécuter de tests à partir de l'interface graphique. 

À chaque fois que j'essaie d'exécuter des tests via l'interface graphique, le message suivant s'affiche:

enter image description here

Je suis capable d'exécuter les tests depuis le terminal en utilisant la commande suivante:

./gradlew connectedAndroidTest

Je cours Android Studio 0.5.2 avec Gradle 1.11 avec Plugin 0.9.0 on Mac OSX

Ma structure de projet est la suivante.

MyProject/
   src/
      androidTest/
         Java/
             com.myproject.app.test/
                … (tests source code) …
      main/
         Java/
             com.myproject.app/
                … (source code) …
         res/
                … (resources code) …
   build.gradle

Mon fichier build.gradle ressemble à ce qui suit:

…
Android {
    compileSdkVersion 19
    buildToolsVersion "19.0.1"

    defaultConfig {
        versionCode 12
        versionName "2.0"
        minSdkVersion 9
        targetSdkVersion 19       
    testPackageName "com.test.foo"
        testInstrumentationRunner "Android.test.InstrumentationTestRunner"
    }
}
…

Si quelqu'un a des suggestions, je serai plus qu'heureux de les y trouver.

19
El Wexicano

Ok, j'ai trouvé la cause de mon problème.

Dans le fichier misc.xml situé dans le dossier .idea de mon projet, la valeur d'attribut non valide pour le composant ProjectRootManager ressemblait à ce qui suit:

  <component name="ProjectRootManager" version="2" languageLevel="JDK_1_6" assert-keyword="true" jdk-15="true" project-jdk-name="1.6 (3)" project-jdk-type="JavaSDK">
    <output url="file://$PROJECT_DIR$/build/classes" />
  </component>

Donc, changer la valeur de l'attribut project-jdk-name en "1.6" _, a résolu le problème pour moi. Vous trouverez ci-dessous à quoi cela ressemblait après avoir mis à jour la valeur.

  <component name="ProjectRootManager" version="2" languageLevel="JDK_1_6" assert-keyword="true" jdk-15="true" project-jdk-name="1.6" project-jdk-type="JavaSDK">
    <output url="file://$PROJECT_DIR$/build/classes" />
  </component>

J'espère que cela aide quelqu'un.

4
El Wexicano

Aujourd'hui, j'ai eu le même problème avec certains tests d'espresso et cela me rendait folle parce que tout semblait normal. Enfin, j'ai découvert que le problème était dû au fait que la méthode annotée avec @BeforeClass (annotation utilisée pour marquer la méthode à exécuter avant toute méthode de test de la classe) lançait une exception. La raison pour laquelle cela m'a pris plus de temps que prévu était parce que si quelque chose ne va pas dans cette méthode, l'empilement de pile de l'exception ne s'affiche pas dans la fenêtre Journal de l'onglet Exécuter mais dans la fenêtre Journal de l'onglet Moniteur Android  

Si vous voulez reproduire le problème, ajoutez ceci à votre classe de test:

@BeforeClass
public static void setupClass() {
    throw new RuntimeException("Sorry dude, you won't find any test!");
}
25
Diego Palomar

Cela peut se produire lorsque le type de votre configuration d'exécution est incorrect. 

Avec moi, cela se passe mal lors de l'exécution d'un test Espresso avec Kotlin: cela crée en quelque sorte un test Android JUnit qui est du type incorrect. La création manuelle d'un test instrumenté Android résout le problème.

8
Cristan

Pour moi c'était une chose stupide. Le simple fait de passer de Release variante de construction à Debug a résolu le problème. 

1
gingo

L'annotation @Test doit être annotée à partir de import org.junit.jupiter.api.Test;

0
Anjan Debnath

Dans mon cas, USING KOTLIN , il n’a rien jeté. Si je lance dans le terminal la commande qu’il essayait de faire:

$ adb Shell am instrument -w -r -e debug false -e classe xx.xxxxxxx.xx.xx.xxx.xxx.HomeActivityTests xx.xxxxxxx.xx.xx.xxx.xxx.xxx.HomeActivityTests xx.xxxxxxx.xx.xx.xx.xxx.xxx.HomeActivityTests xx.xxxxxxx.xx.xx.xx.xxx.xxx.xxx.xxx.xxx.xxx.xxx.xx.

il y aura une erreur:

Causé par: org.mockito.exceptions.base.MockitoException: 

Impossible de simuler/espionner la classe xx.xxxxxxx.xx.xx.xxx.xxx.xxx.ProductUseCase

Mockito ne peut pas se moquer de/espionner parce que: - classe finale À xx.xxxxxxx.xx.xx.rules.useCases.ProductUseCaseRule. (ProductUseCaseRule.kt: 36) À xx. xxxxxxx.xx.xx.xxx.xxx.HomeActivityTests. (HomeActivityTests.kt: 25) ... 20 autres

LES ÉCHECS!!!

et cela m'a montré que je n'avais pas open ma classe, car c'est un doit en testant avec Kotlin

0
Rafael Ruiz Muñoz