IntelliJ IDEA con Junit 4.7"!!! Se espera JUnit versión 3.8 o posterior:"


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

"!!! JUnit versión 3.8 o posterior esperada: "

Cabe señalar que este es un Android proyecto en el 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());
    }
}

El seguimiento de la 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
Author: weston, 2010-03-11

16 answers

Este problema ocurre porque la plataforma Android (android.jar) ya contiene clases JUnit. IDEA test runner carga estas clases y ve que son del antiguo JUnit, mientras intenta usar tests anotados que es una característica del nuevo JUnit, por lo tanto obtiene el error del test runner.

La solución es simple, abrir el Project Structure | Modules | Dependencies, y mover el junit-4.7.jar hacia arriba, de modo que viene antes Android 1.6 Platform en el camino de clase. Ahora el corredor de prueba estará feliz mientras carga la nueva versión JUnit.

 354
Author: CrazyCoder,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2013-06-14 21:03:58

introduzca la descripción de la imagen aquí

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

O bien, también puede hacerlo globalmente a través de Module Settings > SDK Location > JDK, especificando JDK 8 de Oracle en lugar de la copia del SDK de Android.

 28
Author: alexey polusov,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-01-08 23:36:12

Tuve este problema con un proyecto de módulos múltiples (libgdx). Un módulo es Java puro y tiene pruebas. Mi solución fue establecer" use alternative JRE "a" Java 1.8 " en la configuración de ejecución de mis pruebas unitarias. Esto asegura que ningún android.jar está en el classpath y el junit 4.se utiliza x runner.

 7
Author: Uwe Post,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-04-28 12:56:54

Obtuve 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 se encuentre bajo 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úrese de que Test Artifact en Build Variants esté establecido en Android Instrumentation Tests
  3. Haga clic en el menú Run > Edit Configuration
  4. Asegúrese de que su el nombre de la clase / método está dentro de Android Tests en 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 de nuevo. Luego creará la configuración bajo la sección Android Tests y se ejecutará en el dispositivo/emulador.
 6
Author: CallMeLaNN,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-02-10 18:11:09

Para Android Studio - a partir de Android Studio 1.1 Beta 4, Google ha añadido soporte para Android Gradle plugin 1.1.0-RC. El nuevo plugin soporta Pruebas Unitarias a través de Android Studio usando junit 4+.

Esto todavía es experimental y hay algunos pasos manuales para configurarlo.

 5
Author: ZahiC,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-02-08 12:27:37

Para todos los que están leyendo este post y todavía tienen el mismo problema con AndroidStudio 1.0. No se puede cambiar el orden de dependencia en AndroidStudio tiene el IDE reescribirlos automáticamente. Y, incluso si se las arregla para cambiar el orden mediante la modificación de la .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. Echa un vistazo a esto https://github.com/JCAndKSolutions/android-unit-test y usa este plugin también: https://github.com/evant/android-studio-unit-test-plugin

Funciona perfectamente para mí.

 4
Author: rontho,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-02-13 08:39:49

Hay dos cosas que podría imaginar que sucedan

  • Si tu IDE intenta iniciar un Android Prueba Junit que se ejecuta directamente en el emulador no se puede utilizar Junit4.
  • Si accidentalmente usaste las clases junit proporcionadas desde el jar de android, no pueden ejecutarse en una jvm normal porque solo hay clases compiladas reales para la vm dalvik de android.
 1
Author: Janusz,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2010-03-11 09:28:21

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

En otras máquinas (mismo proyecto, misma versión de AS) encontré que al ejecutar pruebas unitarias, el IDE no agrega el android.jar archivo a la classpath, 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 moviéndonos de intellij a COMO alguna caché de configuraciones permaneció en algún lugar de mi máquina que causó androide.tarro que se añadirá a la ruta de clase.

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

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

Todavía tratando de entender lo que salió mal, pero esto debería hacer el truco por ahora.

 1
Author: Yossi Shmueli,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2015-04-01 05:58:16

Tuve este problema en Android Studio 1.5, porque no sabía que tenía que cambiar la configuración "Probar artefacto" en la "Variantes de compilación" (esquina inferior izquierda de la ventana principal) de "Pruebas de instrumentación de Android" a "Pruebas unitarias". Cuando lo haces, puedes ver un ExampleUnitTest.archivo java en la ventana del proyecto.

 1
Author: ScarOnTheSky,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-01-19 10:32:05

Tuve el mismo problema pero por otra razón. Yo estaba en IntelliJ con un proyecto de gradle java regular (no android), pero el JDK se estableció en el SDK de Android en Project Structure (era el JDK predeterminado por algunas razones). Esto es realmente tonto, pero IntelliJ no fue lo suficientemente amable para indicarme lo que está mal, así que me quedé atascado en eso.

 1
Author: Winter,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-04-10 23:30:20

Tengo el mismo error cuando he creado mi propio paquete junit

introduzca la descripción de la imagen aquí

Para arreglar esto, he agregado estas dos líneas en mi archivo gradle de app como se explica aquí :

dependencies {
    ...
    // Required -- JUnit 4 framework
    testCompile 'junit:junit:4.12'
    // Optional -- Mockito framework
    testCompile 'org.mockito:mockito-core:1.10.19'
}
 1
Author: Kevin ABRIOUX,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-08-25 12:55:57

Así es como lo resolví:

Editar configuraciones - > Valores predeterminados - > Android JUnit - > Añadir lo siguiente al directorio de trabajo:

MOD MODULE_DIR {

 1
Author: liminal,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-11-25 04:44:18

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

 0
Author: Przemo,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-06-02 08:10:18

Si elimina

testOptions {
    unitTests.returnDefaultValues = true
}

De su build.gradle funcionará

 0
Author: Chiara,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-06-29 08:44:37

Vaya a Estructura del proyecto - > Configuración de la plataforma, cambie los SDK a 1.8 resolví mi problema.

 0
Author: Lin W,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-01-23 19:59:06

También me enfrentaba al mismo problema, después de cambiar a build.gradle está funcionando bien para mí.

Cambia tu versión de junit dentro de build.gradle to:

    testImplementation 'junit:junit:3.8'
 0
Author: Abdul Rizwan,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-06-27 06:32:05