web-dev-qa-db-fra.com

Pourquoi ne puis-je pas importer AndroidJUnit4 et ActivityTestRule dans ma classe de test unitaire?

Je ne parviens pas à importer certains des Android classeurs du cadre de test de l'interface utilisateur - je ne peux tout simplement pas comprendre ce qui ne va pas!

Ceci est ma classe:

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

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

@Test
public void listGoesOverTheFold() {
    onView(withText("Hello world!")).check(matches(isDisplayed()));
  }
}

Mais pour une raison quelconque, je reçois des erreurs 'ne trouve pas le symbole ActivityTestRule' et 'ne trouve pas le symbole AndroidJUnit4'. J'ai essayé de les importer, mais ils ne peuvent pas être trouvés.

Les dépendances dans build.gradle sont définies sur:

compile fileTree(dir: 'libs', include: ['*.jar'])
testCompile 'junit:junit:4.12'
compile 'com.Android.support:appcompat-v7:23.4.0'
androidTestCompile 'com.Android.support:support-annotations:23.4.0'

androidTestCompile 'com.Android.support.test:runner:0.4'
androidTestCompile 'com.Android.support.test:rules:0.4'
androidTestCompile 'com.Android.support.test.espresso:espresso-core:2.2.1'
androidTestCompile 'com.Android.support.test.uiautomator:uiautomator-v18:2.1.2'

Je pense donc avoir configuré toutes les dépendances. J'ai essayé beaucoup de choses, mais sans succès.

Quelqu'un a des idées?

61
Hallupa

Il existe deux types de tests que vous pouvez configurer dans Android.

Tests unitaires

  • Celles-ci s'exécutent directement sur la machine virtuelle et n'ont pas accès aux classes de structure Android.
  • Ils sont conservés dans le test/Java paquet
  • Les dépendances doivent être ajoutées dans le fichier build.gradle avec la commande testCompile
  • Vous utilisez généralement Mockito, Robolectric & JUnit pour ces tests

Tests d'instrumentation

  • Ceux-ci fonctionnent sur un émulateur Android et ont un accès complet à toutes les classes Android
  • Ils sont conservés dans le androidTest/Java paquet
  • Des dépendances doivent être ajoutées à build.gradle avec androidTestCompile
  • Vous utilisez généralement Espresso et JUnit pour ces tests

D'après ce que je peux dire, vous essayez d'écrire des tests d'instrumentation avec Espresso, mais vous avez votre test dans le test/Java package qui est destiné aux tests unitaires. Dans ce cas, vous devez déplacer votre classe de test vers la androidTest/Java paquet.

51
Jahnold

Ajoutez-les dans la nouvelle version:

androidTestImplementation 'com.Android.support.test:rules:1.0.2'
androidTestImplementation 'com.Android.support.test:runner:1.0.2'
109
Smaran

Ajouter:

androidTestImplementation 'com.Android.support.test:rules:1.0.2'

résout le problème, mais n'oubliez pas de synchroniser le projet avec les fichiers de gradation. Alors seulement, les changements entreront en vigueur.

28
Bartosz Posieczek

besoin de cela ajouter des dépendances

 testCompile 'com.Android.support.test:rules:0.5'
 testCompile 'com.Android.support.test:runner:0.5'
21
prodigy007

Si vous avez migré vers AndroidX, utilisez ceci:

androidTestImplementation 'androidx.test:rules:1.1.1'
androidTestImplementation 'androidx.test:runner:1.1.1'
20
peresisUser

Ajouter une dépendance.

androidTestCompile 'com.Android.support.test:rules:0.5'
androidTestCompile 'com.Android.support.test:runner:0.5'
8
velraj