85 votes

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

Je vais avoir de la difficulté à l'importation de certains de l'INTERFACE utilisateur Android cadre de tests de clases - je ne peux pas comprendre ce qui ne va pas!

C'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, j'obtiens une erreur "impossible de trouver le symbole ActivityTestRule" et "impossible de trouver le symbole AndroidJUnit4'. J'ai essayé de les importer, mais ils ne peuvent pas être trouvés.

Les dépendances de construction.gradle sont fixés à:

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'

Donc je pense avoir toutes les dépendances de l'installation - j'ai essayé beaucoup de choses mais avec pas de chance.

N'importe qui ont des idées?

138voto

Smaran Points 636

Ajoutez-les dans la nouvelle version:

 androidTestImplementation 'com.android.support.test:rules:1.0.2'
androidTestImplementation 'com.android.support.test:runner:1.0.2'
 

67voto

Jahnold Points 5451

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

Les Tests Unitaires

  • Ceux-ci s'exécutent directement sur la JVM et n'ont pas accès à l'Android les classes du framework.
  • Ils sont conservés dans de l' test/java package
  • Les dépendances nécessaire d'ajouter dans la construction.gradle fichier avec la commande testCompile
  • Vous utilisez généralement Mockito, Robolectric & JUnit pour ces tests

L'Instrumentation Des Essais

  • Ceux-ci s'exécutent sur un émulateur Android et avoir un accès complet à tous les Android classes
  • Ils sont conservés dans de l' androidTest/java package
  • Les dépendances doivent être ajoutés à construire.gradle avec androidTestCompile
  • Vous utilisez généralement Espresso et JUnit pour ces tests

À partir de ce que je peux dire vous essayez d'écrire l'instrumentation des essais avec un Espresso, mais votre test en test/java paquet qui est pour les tests unitaires. Dans ce cas, vous devez déplacer votre classe de test à l' androidTest/java package.

37voto

Bartosz Posieczek Points 131

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 gradle. Ce n'est qu'alors que les modifications prendront effet.

24voto

prodigy007 Points 171

besoin de cela ajouter des dépendances

  testCompile 'com.android.support.test:rules:0.5'
 testCompile 'com.android.support.test:runner:0.5'
 

11voto

velraj Points 81

Ajoutez une dépendance.

 androidTestCompile 'com.android.support.test:rules:0.5'
androidTestCompile 'com.android.support.test:runner:0.5'
 

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X