Cuando intento ejecutar la siguiente prueba en IntelliJ IDEA recibo el mensaje:
"!!! Se esperaba JUnit versión 3.8 o posterior:"
Cabe señalar que este es un proyecto de Android 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
java
android
junit
intellij-idea
benstpierre
fuente
fuente
Respuestas:
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 utilizar pruebas anotadas, que es una característica del nuevo JUnit, por lo tanto, obtiene el error del corredor de prueba.La solución es simple, abra el
Project Structure
|Modules
El |Dependencies
, y muevajunit-4.7.jar
hacia arriba, para que aparezca antesAndroid 1.6 Platform
en el classpath. Ahora el corredor de pruebas estará contento cuando cargue la nueva versión de JUnit.fuente
Class not found: "com.example.intellijgradletest.MainActivityTest"
mi módulo es un módulo de biblioteca java, por lo que cambiar JRE a 1.8 java resolvió el problema.
O también puede hacerlo globalmente a través de Configuración del módulo> Ubicación del SDK> JDK, especificando el JDK 8 de Oracle en lugar de la copia del SDK de Android.
fuente
~/Library/Preferences/AndroidStudioX.X/options/jdk.table.xml
oC:\Users\Name\.AndroidStudioX.X\config\options\jdk.table.xml
en Windows. Encuentre el nodo<name value="Android API 28 Platform" />
y configúrelo<annotationsPath>
en<root url="jar://$USER_HOME$/Android-SDK/platforms/android-28/data/annotations.zip!/" type="simple" />
. También asegúrese de que el<classPath>
nodo contengaplatforms/android-28/...
en ambas URL de ruta de archivo. Ajuste "Android-SDK" al nombre de su carpeta.Tuve este problema con un proyecto de varios módulos (libgdx). Un módulo es puro Java y tiene pruebas. Mi solución fue establecer "usar JRE alternativo" en "Java 1.8" en la configuración de ejecución de mis pruebas unitarias. Esto asegura que no hay android.jar en el classpath y se utiliza el corredor junit 4.x
fuente
Obtuve el mismo error al crear ambos
Unit Test
yAndroid Instrument Test
en Android Studio 1.4+ y comenzó a confundirse. Para evitar este error Asegúrese de que el tipo de prueba se caen bajoAndroid Tests
elRun/Debug Configurations
Test Artifact
en elBuild Variants
se establece enAndroid Instrumentation Tests
Run
>Edit Configuration
Android Tests
lugar deJUnit
JUnit
simplemente elimine la configuración y haga clic derecho en el archivo que desea probar yRun
nuevamente. Luego creará la configuración en laAndroid Tests
sección y se ejecutará en el dispositivo / emulador.fuente
test
carpeta a otraandroidTest
. Android Studio no actualizó la configuración de ejecución después de hacer estoPara Android Studio: a partir de Android Studio 1.1 Beta 4 , Google ha agregado soporte para el complemento Android Gradle 1.1.0-RC . El nuevo complemento admite pruebas unitarias a través de Android Studio con junit 4+.
Esto todavía es experimental y hay algunos pasos manuales para configurarlo.
fuente
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, el IDE los reescribe 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 también este complemento: https://github.com/evant/android-studio-unit-test-plugin
Funciona perfectamente para mi.
fuente
Tengo el mismo error cuando creo mi propio paquete junit
Para solucionar esto, he agregado estas dos líneas en el archivo gradle de mi aplicación como se explica aquí :
fuente
Hay dos cosas que podría imaginar que sucedan
fuente
Esto también me sucedió 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) descubrí que al ejecutar pruebas unitarias, el IDE no agrega el archivo android.jar al classpath, mientras que en mi máquina sí lo hace.
Mi mejor suposición fue que debido a la conversión que hicimos de Maven a Gradle y al pasar de intellij a AS, algunos caché de configuraciones permanecieron en algún lugar de mi máquina que hizo que android.jar se agregara 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 volví a abrir el proyecto y las pruebas funcionaron.
Todavía trato de entender qué salió mal, pero esto debería ser el truco por ahora.
fuente
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 compilació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.
fuente
Tuve el mismo problema pero por otra razón. Estaba en IntelliJ con un proyecto normal de Java Gradle (no Android) pero el JDK estaba configurado para Android SDK
Project Structure
(era el JDK predeterminado por algunas razones). Esto es realmente tonto, pero IntelliJ no fue lo suficientemente amable como para indicarme qué está mal, así que me quedé atrapado en eso.fuente
Así es como lo resolví:
Editar configuraciones -> Valores predeterminados -> Android JUnit -> Agregue lo siguiente al directorio de trabajo:
$ MODULE_DIR $
fuente
Para mí, este problema fue causado por una configuración de ejecución obsoleta / rota para las pruebas. Simplemente tuve que eliminar la configuración, luego crear una nueva y se solucionó el problema.
fuente
En el proyecto de Android que tenía
minifyEnabled = true
, después de cambiarlo afalse
todo funcionó.fuente
Si quitas
de tu
build.gradle
funcionaráfuente
Vaya a Estructura del proyecto -> Configuración de la plataforma, cambie los SDK a 1.8 resolvió mi problema.
fuente
También estaba enfrentando el mismo problema, después de cambiar a build.gradle, funciona bien para mí.
cambie su versión de junit dentro de build.gradle a:
fuente
Seguí la respuesta de CrazyCoder pero no se mostró ningún archivo junit en las dependencias. así que descargué uno de http://www.java2s.com/Code/Jar/j/Downloadjunitjar.htm , luego lo agregué presionando el botón más a la derecha. Y funcionó
fuente
Desactivar "Usar JDK incrustado" en Project Structure / SDK Location es lo que ayudó en mi caso, pero no sé exactamente cuál fue la razón por la que estaba fallando en primer lugar.
fuente
Reemplace su android.jar en la carpeta libs con el último. Puedes descargarlo desde aquí
fuente
En Android Studio,
Open Project Structure -> SDK Location
, se puede verJDK
la ubicación, el cambio de uso "Uso incrustado JDK" que es el propietarioJDK
de aplicar, a continuación, cambiar de nuevo a "Uso del JDK incorporado" , que es tal vez el trabajofuente
En mi caso, el cambio
JRE
en laRun Configurations
dosis resuelve el problema, pero cuando hago clic en el botón Ejecutar junto a la función de prueba, lasJRE
opciones se restablecerán a los valores predeterminados.Finalmente, similar a la respuesta de @CrazyLiu, en
Project Structure - SDK Location - JDK
, seleccioneEmbedded JDK
. Porque no hay una casilla de verificación en Android Studio 3.6.fuente
recibí el mismo mensaje
por un simple error de principiante. Había usado los mismos nombres de paquete y nombres de clase en src / main y src / test para una clase (la clase HomeController en mi caso):
Con eso, la clase src / main HomeController, así como la clase src / test HomeController, tenían la misma ruta completa:
El resultado: cualquier prueba que dependiera de la clase HomeController ha fallado.
Cambiar el nombre del paquete y / o el nombre de la clase ha resuelto el problema. Aquí el ejemplo, cuando ambos, el nombre del paquete y el nombre de la clase cambian:
Ahora los nombres de clase completamente calificados difieren. El nombre de la clase src / main HomeController es:
y el nombre de clase src / test HomeHontrollerTest es:
Con los nombres de clase totalmente calificados como únicos, el problema desaparece.
fuente