2
votes

Test AndroidX Espresso: aucun test n'a été trouvé et suite de tests vide

J'essaie d'exécuter src / androidTest qui est un test d'instrument dans mon projet Android qui utilise les bibliothèques AndroidX , mais j'obtiens Aucun test n'a été trouvé et le journal Suite de tests vide .

J'ai vérifié que tous les exemples et documents qui utilisent les bibliothèques AndroidX font de même.

J'ai essayé de configurer Modifier les configurations en me basant sur le lien suivant https: // stackoverflow .com / a / 53715513/1826656 Mais toujours pas de chance.

Est-ce que je fais quelque chose de mal? ou vous avez manqué des étapes?

Veuillez consulter cette image pour le Journal de test a>

MainActivityTest.java Code:

android {
    defaultConfig {
       testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunne"
    }

    testOptions {
        execution 'ANDROIDX_TEST_ORCHESTRATOR'
    }
}

dependencies {
    testImplementation 'junit:junit:4.12'
    androidTestImplementation 'androidx.test:runner:1.1.1'
    androidTestUtil 'androidx.test:orchestrator:1.1.1'
    androidTestImplementation 'androidx.test.ext:junit:1.1.0'
    androidTestImplementation 'androidx.test:rules:1.1.1'
    androidTestImplementation 'androidx.test.espresso:espresso-core:3.1.1'
    androidTestImplementation 'androidx.test.espresso:espresso-contrib:3.1.1'
}

Dépendances du fichier Gradle:

import static androidx.test.espresso.Espresso.onView;
import static androidx.test.espresso.action.ViewActions.typeText;
import static androidx.test.espresso.assertion.ViewAssertions.matches;
import static androidx.test.espresso.matcher.ViewMatchers.isDisplayed;
import static androidx.test.espresso.matcher.ViewMatchers.withId;
import static androidx.test.espresso.matcher.ViewMatchers.withText;

@RunWith(AndroidJUnit4.class)
@LargeTest
public class MainActivityTest {

   @Rule
   ActivityTestRule mActivityRule = new ActivityTestRule<>(MainActivity.class, false, false);

   @Test
   public void checkViewsVisibility() {
     // verify the visibility of recycler view on screen
     onView(withId(R.id.record_list_rv)).check(matches(isDisplayed()));

     // verify the visibility of progressbar on screen
     onView(withId(R.id.progressBar)).check(matches(isDisplayed()));

     // verify the visibility of no data TextView on screen By default it should be GONE
     onView(withId(R.id.no_data_tv)).check(matches(isDisplayed()));

     onView(withId(R.id.no_data_tv)).check(matches(withText("No Data")));

     onView(withId(R.id.no_data_tv)).perform(typeText("No Data"));
   }
}


1 commentaires

Question connexe pertinente: stackoverflow.com/questions/53600222/...


3 Réponses :


2
votes

Vous avez une faute de frappe dans votre defaultConfig. Cela devrait probablement être:

testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"


1 commentaires

La correction d'une faute de frappe était également la solution dans un cas où j'avais créé un testInstrumentationRunner personnalisé, l'avais déplacé vers un nouveau package, mais j'avais oublié de mettre à jour la valeur dans le build.gradle fichier. Malheureusement, ni Android Studio ni ./gradlew: app: connectedAndroidTest ne m'ont dit qu'il ne pouvait pas trouver le coureur, ils ont juste donné des messages d'erreur que Aucun test n'a été trouvé .



-1
votes

Pour moi, après m'être assuré que toutes les dépendances étaient disponibles, le changement de targetSdk de 30 à une version inférieure a résolu mon problème.


0 commentaires

0
votes

Dans mon cas, j'ai également eu du mal à exécuter des tests d'interface utilisateur. Vérifier (et essayer) la plupart des choses dans des sujets similaires n'a donné aucun résultat pour moi. Enfin, j'ai exécuté mes tests d'instrumentation via la commande gradle:

gradlew connectedProdDebugAndroidTest

ou (si vous souhaitez exécuter un seul test ou des tests dans une seule classe)

gradlew connectedProdDebugAndroidTest -Pandroid.testInstrumentationRunnerArguments.class = {package.class} # {methodName}

Après avoir exécuté les tests par commande, il est devenu possible de les exécuter par bouton dédié.


0 commentaires