unit test intellij idea how hacer generate for create crear como automatically java android junit intellij-idea

java - how - intellij idea generate test



IntelliJ IDEA con Junit 4.7 “!!! Se espera la versión 3.8 o posterior de JUnit: " (16)

Cuando intento ejecutar la siguiente prueba en IntelliJ IDEA , recibo el mensaje:

"!!! Se espera la versión 3.8 o posterior de JUnit:"

Cabe señalar que este es un proyecto de Android que estoy trabajando en IntelliJ IDEA 9.

public class GameScoreUtilTest { @Test public void testCalculateResults() throws Exception { final Game game = new Game(); final Player player1 = new Player(); { final PlayedHole playedHole = new PlayedHole(); playedHole.setScore(1); game.getHoleScoreMap().put(player1, playedHole); } { final PlayedHole playedHole = new PlayedHole(); playedHole.setScore(3); game.getHoleScoreMap().put(player1, playedHole); } final GameResults gameResults = GameScoreUtil.calculateResults(game); assertEquals(4, gameResults.getScore()); } }

La traza de pila completa se ve así ...

!!! JUnit version 3.8 or later expected: java.lang.RuntimeException: Stub! at junit.runner.BaseTestRunner.<init>(BaseTestRunner.java:5) at junit.textui.TestRunner.<init>(TestRunner.java:54) at junit.textui.TestRunner.<init>(TestRunner.java:48) at junit.textui.TestRunner.<init>(TestRunner.java:41) at com.intellij.rt.execution.junit.JUnitStarter.junitVersionChecks(JUnitStarter.java:152) at com.intellij.rt.execution.junit.JUnitStarter.canWorkWithJUnitVersion(JUnitStarter.java:136) at com.intellij.rt.execution.junit.JUnitStarter.main(JUnitStarter.java:49) at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:39) at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:25) at java.lang.reflect.Method.invoke(Method.java:597) at com.intellij.rt.execution.application.AppMain.main(AppMain.java:110) Process finished with exit code -3


Así lo resolví:

Editar configuraciones -> Valores predeterminados -> Android JUnit -> Agregue lo siguiente al Directorio de trabajo:

$ MODULE_DIR $


En el proyecto de Android tuve minifyEnabled = true , después de cambiarlo a false todo funcionó.


Este problema ocurre porque la plataforma Android ( android.jar ) ya contiene clases de JUnit. El corredor de prueba IDEA carga estas clases y ve que son del antiguo JUnit, mientras intenta utilizar pruebas anotadas, que es una característica del nuevo JUnit, por lo tanto, recibe el error del corredor de prueba.

La solución es simple, abre la Project Structure | Modules | Dependencies , y mueva el junit-4.7.jar hacia arriba, para que aparezca antes de la Android 1.6 Platform en el classpath. Ahora el corredor de pruebas estará contento mientras carga la nueva versión de JUnit.


Esto también me sucedió a mí en Android Studio 1.1, aunque debería soportar pruebas unitarias sin un complemento.

En otras máquinas (el mismo proyecto, la misma versión de AS) encontré que al ejecutar pruebas unitarias, el IDE no agrega el archivo android.jar a la ruta de clase, mientras que en mi máquina lo hace.

Mi mejor conjetura fue que debido a la conversión que hicimos de Maven a Gradle y al pasar de intellij a AS, quedaron algunos ajustes de caché en algún lugar de mi máquina que causaron que se agregara android.jar al classpath.

Lo que hice fue borrar todos los cachés relacionados con Android de mi máquina (en la carpeta c: / users / USRE_NAME): .android .AndroidStudio .gradle .m2

Después de eso reabrí el proyecto y las pruebas funcionaron.

Sigo intentando entender qué salió mal, pero esto debería hacer el truco por ahora.


Hay dos cosas que podría imaginar que sucedan

  • Si su IDE intenta iniciar una prueba de Android Junit que se ejecuta directamente en el emulador, no puede utilizar Junit4.
  • Si accidentalmente usaste las clases junit provistas desde el android jar, no pueden ejecutarse en un jvm normal porque solo hay clases compiladas reales para el android dalvik vm.


Para todos los que están leyendo esta publicación y aún tienen el mismo problema con AndroidStudio 1.0. No puede cambiar el orden de dependencia en AndroidStudio si el IDE los vuelve a escribir automáticamente. E incluso si logra cambiar el orden modificando el archivo .iml, obtendrá una "clase no encontrada ...". Esto se debe a que la ruta de salida de prueba no se puede establecer en AndroidStudio.

En realidad, hay una solución para hacer que AndroidStudio, Junit y Robolectric trabajen juntos. Eche un vistazo a este https://github.com/JCAndKSolutions/android-unit-test y use este complemento también: https://github.com/evant/android-studio-unit-test-plugin

Funciona perfectamente para mi.


Recibí el mismo error al crear Unit Test y Android Instrument Test en Android Studio 1.4+ y comenzó a confundirse. Para evitar este error, asegúrese de que su clase de prueba esté incluida en Android Tests en Run/Debug Configurations

  1. Asegúrese de seguir las instrucciones correctamente https://developer.android.com/training/testing/unit-testing/instrumented-unit-tests.html
  2. Asegúrate de que Test Artifact in Build Variants esté configurado en Android Instrumentation Tests
  3. Haga clic en el menú Run > Edit Configuration
  4. Asegúrese de que el nombre de su clase / método esté dentro de Android Tests lugar de JUnit
  5. Si está en JUnit simplemente elimine la configuración y haga clic derecho en el archivo que desea probar y Run nuevamente. Luego creará la configuración en la sección Android Tests y se ejecutará en el dispositivo / emulador.

Si eliminas

testOptions { unitTests.returnDefaultValues = true }

desde tu build.gradle funcionará


También estaba enfrentando el mismo problema, después de cambiar a build.gradle, está funcionando bien para mí.

cambia tu versión junit dentro de build.gradle a:

testImplementation ''junit:junit:3.8''


Tengo el mismo error cuando he creado mi propio paquete junit

Para solucionar este problema, he agregado estas dos líneas en mi archivo gradle de la aplicación como se explica here :

dependencies { ... // Required -- JUnit 4 framework testCompile ''junit:junit:4.12'' // Optional -- Mockito framework testCompile ''org.mockito:mockito-core:1.10.19'' }


Tuve el mismo problema pero por otra razón. Estaba en IntelliJ con un proyecto regular de Java Gradle (no en Android) pero el JDK se configuró para el SDK de Android en la Project Structure (fue el JDK predeterminado por algunas razones). Esto es realmente tonto, pero IntelliJ no fue lo suficientemente bueno como para indicarme qué es lo que está mal, así que me quedé atascado en eso.


Tuve este problema con un proyecto de varios módulos (libgdx). Un módulo es Java puro y tiene pruebas. Mi solución fue establecer "usar JRE alternativo" a "Java 1.8" en la configuración de ejecución de mis pruebas unitarias. Esto asegura que no haya android.jar en el classpath y que se use el corredor junit 4.x.


Tuve este problema en Android Studio 1.5, porque no sabía que tenía que cambiar la configuración "Probar artefacto" en "Variantes de construcción" (esquina inferior izquierda de la ventana principal) de "Pruebas de instrumentación de Android" a "Pruebas de unidad ". Cuando lo haga, puede ver un archivo ExampleUnitTest.java en la ventana Proyecto.


Vaya a Estructura del proyecto -> Configuración de plataforma, cambie SDK a 1.8 solucionado mi problema.


mi módulo es un módulo de biblioteca java, por lo que cambiar JRE a 1.8 java solucionó el problema.

O también puede hacerlo globalmente a través de Configuración del módulo> Ubicación del SDK> JDK, especificando JDK 8 de Oracle en lugar de la copia del SDK de Android.