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 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 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> Dépendances du fichier Gradle: Aucun test n'a été trouvé et le journal
Suite de tests vide
. Modifier les configurations
en me basant sur le lien suivant https: // stackoverflow .com / a / 53715513/1826656 Mais toujours pas de chance. 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'
}
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"));
}
}
3 Réponses :
Vous avez une faute de frappe dans votre defaultConfig. Cela devrait probablement être:
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
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é
.
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.
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é.
Question connexe pertinente: stackoverflow.com/questions/53600222/...