J'utilisais pour mes tests d'instrumentation
@RunWith(AndroidJUnit4.class)
de
import androidx.test.runner.AndroidJUnit4;
afin d'établir mes cas de test. Maintenant, cette ligne est marquée comme obsolète avec l’allusion à utiliser AndroidJUnit4
de
import androidx.test.ext.junit.runners.AndroidJUnit4
Cependant, si j'essaie d'importer AndroidJUnit4
à partir du paquet nommé, l'erreur est générée, cette ext
ne peut pas être résolue.
Avez-vous une idée du type de package à inclure dans Gradle pour résoudre ce problème?
Selon la documentation pour AndroidJUnit4 , le fichier de classement doit contenir la ligne suivante:
androidTestImplementation 'androidx.test.ext:junit:1.1.1'
Après avoir ajouté cela, tout a fonctionné pour moi.
Si cela ne fonctionne toujours pas, assurez-vous de nettoyer et/ou de reconstruire votre projet. Vous pouvez aussi consulter la version actuelle directement dans le référentiel maven de Google
Si vous avez essayé la solution de @ MarcelGangwisch et que votre construction échoue en indiquant qu'elle ne trouve pas la ressource ET que vous avez également nettoyé/reconstruit votre projet et qu'il ne fonctionne toujours pas, essayez ceci: (basé également sur la solution de @ KrzysztofDziuba)
Dans votre fichier de classement où vous avez modifié la dépendance, assurez-vous de l'ajouter au type dont vous avez besoin, c'est-à-dire:
Pour les tests d'interface utilisateur:
androidTestImplementation 'androidx.test.ext: junit: 1.1.0'
Pour les tests unitaires:
testImplementation 'androidx.test.ext: junit: 1.1.0'
Dans mon exemple, je l'ai ajouté comme les deux et maintenant cela fonctionne.
Pour moi, les étapes suivantes ont fonctionné:
1. Remplacez les bibliothèques androidx par celle publiée ici . ma dernière app/build.gradle
ressemblait à ceci:
Android {
...
defaultConfig {
...
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
}
...
}
dependencies {
...
testImplementation 'junit:junit:4.12'
// Core library
androidTestImplementation 'androidx.test:core:1.2.0'
// AndroidJUnitRunner and JUnit Rules
androidTestImplementation 'androidx.test:runner:1.2.0'
androidTestImplementation 'androidx.test:rules:1.2.0'
// Assertions
androidTestImplementation 'androidx.test.ext:junit:1.1.1'
androidTestImplementation 'androidx.test.ext:truth:1.2.0'
androidTestImplementation 'com.google.truth:truth:0.42'
// Espresso dependencies
androidTestImplementation 'androidx.test.espresso:espresso-core:3.2.0'
}
J'ai ensuite remplacé manuellement les modules importés de ma classe ExampleInstrumentTest.Java
par les dernières classes:
import androidx.test.internal.runner.junit4.AndroidJUnit4ClassRunner;
import androidx.test.platform.app.InstrumentationRegistry;
import androidx.test.rule.ActivityTestRule;
import org.junit.Assert;
import org.junit.Before;
import org.junit.Rule;
import org.junit.Test;
import org.junit.runner.RunWith;
@RunWith(AndroidJUnit4ClassRunner.class)
public class ExampleInstrumentedTest {
...
@Rule
public final ActivityTestRule<MainActivity> main = new ActivityTestRule<>(MainActivity.class, true);
@Before
public void init() {
...
}
@Test
public void listCount() {
...
}
@Test
public void useAppContext() {
Context appContext = InstrumentationRegistry.getInstrumentation().getTargetContext();
Assert.assertEquals("in.curioustools.aad_x_testing2", appContext.getPackageName());
System.out.println("useAppContext : Test Ran");
}
}
Ce qui me dérangeait, c’était le fait que la classe InstrumentationRegistery
était toujours dépréciée. J'ai donc utilisé InstrumentationRegistry.getInstrumentation().getTargetContext();
de androidx.test.platform.app.InstrumentationRegistry
class.
J'ai essayé toutes les réponses données ci-dessus jusqu'à ce que je me rende sur le site officiel Android. Ils ont alors suggéré d'importer à partir de androidx.test.ext.junit.runners.AndroidJUnit4
au lieu de androidx.test.runner.AndroidJUnit4
. lien
Dans mon cas, changer androidTestImplementation
en testImplementation
m'a aidé. Je ne connaissais pas la différence avant de lire ceci Différence Android entre testImplementation et androidTestImplementation dans build.gradle