Lorsque j'essaie d'exécuter le test suivant dans IntelliJ IDEA, j'obtiens le message:
"!!! JUnit version 3.8 ou ultérieure attendue:"
Il convient de noter qu'il s'agit d'un projet Android sur lequel je travaille dans 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 trace de pile complète ressemble à ceci ...
!!! 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
la source
la source
Réponses:
Ce problème se produit car Android Platform (
android.jar
) contient déjà des classes JUnit. Le testeur IDEA charge ces classes et voit qu'elles proviennent de l'ancien JUnit, tandis que vous essayez d'utiliser des tests annotés qui sont une fonctionnalité du nouveau JUnit, vous obtenez donc l'erreur du testeur.La solution est simple, ouvrez le
Project Structure
|Modules
|Dependencies
, et déplacez-lejunit-4.7.jar
vers le haut, de sorte qu'il vienne avantAndroid 1.6 Platform
dans le chemin de classe. Désormais, le testeur sera content de charger la nouvelle version de JUnit.la source
Class not found: "com.example.intellijgradletest.MainActivityTest"
mon module est un module de bibliothèque java, donc changer JRE en 1.8 java a résolu le problème.
Ou, vous pouvez également le faire globalement via Paramètres du module> Emplacement du SDK> JDK, en spécifiant le JDK 8 d'Oracle au lieu de la copie du SDK Android.
la source
~/Library/Preferences/AndroidStudioX.X/options/jdk.table.xml
ouC:\Users\Name\.AndroidStudioX.X\config\options\jdk.table.xml
sur Windows. Recherchez le nœud<name value="Android API 28 Platform" />
et définissez-le<annotationsPath>
sur<root url="jar://$USER_HOME$/Android-SDK/platforms/android-28/data/annotations.zip!/" type="simple" />
. Assurez-vous également que le<classPath>
nœud contientplatforms/android-28/...
dans les deux URL de chemin de fichier. Ajustez "Android-SDK" au nom de votre dossier.J'ai eu ce problème avec un projet multi-modules (libgdx). Un module est pur Java et a des tests. Ma solution a été de définir «utiliser JRE alternatif» sur «Java 1.8» dans la configuration d'exécution de mes tests unitaires. Cela garantit qu'aucun android.jar ne se trouve sur le chemin de classe et que le runner junit 4.x est utilisé.
la source
J'ai eu la même erreur lors de la création des deux
Unit Test
etAndroid Instrument Test
dans Android Studio 1.4+ et cela a commencé à devenir confus. Pour éviter cette erreur Assurez - vous que votre classe de test est tomber sousAndroid Tests
leRun/Debug Configurations
Test Artifact
enBuild Variants
est réglé surAndroid Instrumentation Tests
Run
>Edit Configuration
Android Tests
au lieu deJUnit
JUnit
supprimez simplement la configuration et faites un clic droit sur le fichier que vous souhaitez tester etRun
encore. Il créera ensuite la configuration sous laAndroid Tests
section et s'exécutera sur l'appareil / l'émulateur.la source
test
dossier à l'autreandroidTest
. Android Studio n'a pas mis à jour la configuration d'exécution après avoir fait celaPour Android Studio - à partir d' Android Studio 1.1 Beta 4 , Google a ajouté la prise en charge du plug-in Android Gradle 1.1.0-RC . Le nouveau plugin prend en charge les tests unitaires via Android Studio à l'aide de junit 4+.
C'est encore expérimental et il y a quelques étapes manuelles pour le configurer.
la source
Pour tous ceux qui lisent ce post et qui ont toujours le même problème avec AndroidStudio 1.0. Vous ne pouvez pas modifier l'ordre des dépendances dans AndroidStudio, l'IDE les réécrit automatiquement. Et, même si vous parvenez à changer l'ordre en modifiant le fichier .iml, vous obtiendrez une "classe non trouvée ...". En effet, le chemin de sortie de test ne peut pas être défini sur AndroidStudio.
En fait, il existe une solution pour faire fonctionner AndroidStudio, Junit et Robolectric ensemble. Regarde ça https://github.com/JCAndKSolutions/android-unit-test et utilisez également ce plugin: https://github.com/evant/android-studio-unit-test-plugin
Fonctionne parfaitement pour moi.
la source
J'ai la même erreur lorsque j'ai créé mon propre package junit
Pour résoudre ce problème, j'ai ajouté ces deux lignes dans mon fichier de notes d'application comme il est expliqué ici :
la source
Il y a deux choses que je pourrais imaginer arriver
la source
Cela m'est également arrivé dans Android Studio 1.1 - bien qu'il devrait prendre en charge les tests unitaires sans plug-in.
Sur d'autres machines (même projet, même version d'AS), j'ai constaté que lors de l'exécution de tests unitaires, l'EDI n'ajoute pas le fichier android.jar au chemin de classe, alors que sur ma machine, c'est le cas.
Ma meilleure supposition était qu'en raison de la conversion que nous avons faite de Maven en Gradle et du passage d'Intellij en AS, un cache de paramètres est resté quelque part dans ma machine, ce qui a entraîné l'ajout d'android.jar au chemin de classe.
Ce que j'ai fait est d'effacer tous les caches liés à Android de ma machine (sous le dossier c: \ users \ USRE_NAME): .android .AndroidStudio .gradle .m2
Après cela, j'ai rouvert le projet et les tests ont fonctionné.
J'essaie toujours de comprendre ce qui n'a pas fonctionné, mais cela devrait faire l'affaire pour l'instant.
la source
J'ai eu ce problème dans Android Studio 1.5, car je ne savais pas que je devais passer le paramètre "Test d'artefact" dans les "Build Variants" (coin inférieur gauche de la fenêtre principale) de "Android Instrumentation Tests" à "Unit Tests ". Lorsque vous le faites, vous pouvez voir un fichier ExampleUnitTest.java dans la fenêtre Projet.
la source
J'ai eu le même problème mais pour une autre raison. J'étais sur IntelliJ avec un projet java gradle régulier (pas android) mais le JDK était réglé sur le SDK Android dans
Project Structure
(était le JDK par défaut pour certaines raisons). C'est vraiment stupide mais IntelliJ n'était pas assez gentil pour m'indiquer ce qui ne va pas, alors je suis resté coincé là-dessus.la source
Voici comment je l'ai résolu:
Modifier les configurations -> Paramètres par défaut -> Android JUnit -> Ajoutez les éléments suivants au répertoire de travail:
$ MODULE_DIR $
la source
Pour moi, ce problème est dû à une configuration d'exécution obsolète / cassée pour les tests. J'ai simplement dû supprimer la configuration, puis en créer une nouvelle et le problème a été résolu.
la source
Dans le projet Android que j'avais
minifyEnabled = true
, après l'avoir changé enfalse
tout fonctionnait.la source
Si vous supprimez
de votre
build.gradle
ça marcherala source
Allez dans Structure du projet -> Configuration de la plate-forme, changez les SDK en 1.8 pour résoudre mon problème.
la source
J'étais également confronté au même problème, après avoir changé en build.gradle, cela fonctionne bien pour moi.
changez votre version junit dans build.gradle en:
la source
J'ai suivi la réponse de CrazyCoder mais il n'y avait aucun fichier junit affiché dans les dépendances. alors j'en ai téléchargé un depuis http://www.java2s.com/Code/Jar/j/Downloadjunitjar.htm , puis je l'ai ajouté en appuyant sur le bouton plus à droite. Et ça a marché
la source
La désactivation de "Utiliser le JDK intégré" dans la structure du projet / l'emplacement du SDK est ce qui m'a aidé dans mon cas, mais je ne sais pas exactement pour quelle raison il a échoué en premier lieu.
la source
Remplacez votre android.jar dans le dossier libs par le dernier. Vous pouvez le télécharger ici
la source
Dans AndroidStudio,
Open Project Structure -> SDK Location
vous pouvez voir l'JDK
emplacement, changer l'utilisation de "Utiliser le JDK intégré" à votre propreJDK
demande, puis revenir à "Utiliser le JDK intégré" , c'est peut-être du travailla source
Dans mon cas, le changement
JRE
deRun Configurations
dose résout le problème, mais lorsque je clique sur le bouton Exécuter à côté de la fonction de test, lesJRE
options seront réinitialisées par défaut.Enfin, similaire à la réponse de @CrazyLiu, dans
Project Structure - SDK Location - JDK
, sélectionnezEmbedded JDK
. Parce qu'il n'y a pas de case à cocher dans Android Studio 3.6.la source
J'ai reçu le même message
par une simple erreur de débutant. J'avais utilisé les mêmes noms de package et noms de classe sur src / main et src / test pour une classe (la classe HomeController dans mon cas):
Avec cela, la classe src / main HomeController, ainsi que la classe src / test HomeController, avaient le même chemin complet:
Résultat: tous les tests qui dépendaient de la classe HomeController ont échoué.
La modification du nom du package et / ou du nom de la classe a résolu le problème. Voici l'exemple, lorsque les deux, le nom du package et le nom de la classe sont modifiés:
Maintenant, les noms de classe pleinement qualifiés diffèrent. Le nom de la classe src / main HomeController est:
et le nom de la classe src / test HomeHontrollerTest est:
Les noms de classe qualifiés étant uniques, le problème disparaît.
la source