unittest unit test support studio run dependency app android junit android-testing androidx

support - unit test android



AndroidJUnit4.class está en desuso: ¿Cómo usar androidx.test.ext.junit.runners.AndroidJUnit4? (5)

Para mis pruebas de instrumentación estaba usando

@RunWith(AndroidJUnit4.class)

desde

import androidx.test.runner.AndroidJUnit4;

Para establecer mis casos de prueba. Ahora esta línea se marca como obsoleta con la sugerencia de usar AndroidJUnit4 desde

import androidx.test.ext.junit.runners.AndroidJUnit4

Sin embargo, si trato de importar AndroidJUnit4 del paquete nombrado, obtengo el error, esa ext no se puede resolver.

¿Tiene una idea, qué paquete debe incluirse en Gradle para resolver este problema?


De acuerdo con la documentación para AndroidJUnit4 , el archivo gradle debe contener la siguiente línea:

androidTestImplementation ''androidx.test.ext:junit:1.1.0''

Después de agregar esto, todo funcionó para mí.

Si aún no funciona, asegúrese de limpiar y / o reconstruir su proyecto. También puede consultar la versión actual directamente en el repositorio de Google.



Intenté todos los pasos anteriores hasta que fui al sitio oficial de Android, y sugirieron importar desde androidx.test.ext.junit.runners.AndroidJUnit4 lugar de androidx.test.runner.AndroidJUnit4 . enlazar


Para mí los siguientes pasos funcionaron:
1. Reemplace las bibliotecas de Android con la que está publicada here . Mi app/build.gradle final app/build.gradle veía así:

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'' }

Luego reemplacé manualmente los módulos importados en mi clase ExampleInstrumentTest.java con las últimas clases:

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"); } }

Lo que me estaba molestando era el hecho de que la clase InstrumentationRegistery todavía estaba en desuso. Así que utilicé InstrumentationRegistry.getInstrumentation().getTargetContext(); de la clase androidx.test.platform.app.InstrumentationRegistry .


Si ha probado la solución de @MellGangwisch y su compilación falla diciendo que no puede encontrar el recurso Y también limpió / reconstruyó su proyecto y aún no funciona, intente esto: (basado también en la solución de @ KrzysztofDziuba)

En su archivo de gradle donde cambió la dependencia, asegúrese de agregarla como el tipo que necesita, es decir:

Para pruebas de interfaz de usuario:

androidTestImplementation ''androidx.test.ext: junit: 1.1.0''

Para pruebas unitarias:

pruebaImplementación ''androidx.test.ext: junit: 1.1.0''

En mi caso lo agregué como ambos y ahora funciona.