web-dev-qa-db-fra.com

Exception dans le fil "principal" Java.lang.NoClassDefFoundError: junit/textui/ResultPrinter

J'essaie de compiler mon projet Android dans Android Studio 0.3.0. Aujourd'hui, j'obtiens l'erreur suivante:

Exception in thread "main" Java.lang.NoClassDefFoundError: junit/textui/ResultPrinter
at Java.lang.Class.forName0(Native Method)
at Java.lang.Class.forName(Class.Java:188)
at com.intellij.rt.execution.application.AppMain.main(AppMain.Java:113)
Caused by: Java.lang.ClassNotFoundException: junit.textui.ResultPrinter
at Java.net.URLClassLoader$1.run(URLClassLoader.Java:217)
at Java.security.AccessController.doPrivileged(Native Method)
at Java.net.URLClassLoader.findClass(URLClassLoader.Java:205)
at Java.lang.ClassLoader.loadClass(ClassLoader.Java:321)
at Sun.misc.Launcher$AppClassLoader.loadClass(Launcher.Java:294)
at Java.lang.ClassLoader.loadClass(ClassLoader.Java:266)
... 3 more

Process finished with exit code 1

Faire quelques recherches sur le Web me porte à croire que ce problème est en quelque sorte lié à JUnit. Cependant, je n'utilise pas JUnit dans mon projet. J'ai peut-être activé une option par inadvertance? Dans ce cas, comment désactiver les tests unitaires dans mon projet? Des idées? 

62
Janne Oksanen

Enfin trouvé. C'est dans la boîte de dialogue Configurations Exécuter/Déboguer. Disabled JUnit et il compile à nouveau.

57
Janne Oksanen

Ce problème est généralement dû à un type de test incorrect:  Junit au lieu de Test Android Select Android test instead of JUnitSelect Android test instead of JUnit

27
radistao

Pour les tests JUnit standard, il vous manque la bibliothèque JUnit, essayez d'ajouter ceci dans le fichier build.gradle:

dependencies {
    ...
    testCompile 'junit:junit:4.12'
    ...
}

Et assurez-vous de placer les tests dans le répertoire "test" parallèlement au paquet "principal" (les tests d'instrumentation passent dans "androidTest", mais la configuration est différente).

8
powder366

Forcer le projet à "synchroniser" via le menu Outils> Android> Synchroniser un projet avec des fichiers Gradle cliquez sur "synchroniser maintenant").

6
Pnemonic

Dans mes configurations Run/Debug, j'avais MyTest sous AndroidTests et sous JUnitTests. Le MyTest sous AndroidTests a été configuré correctement, mais j'ai toujours l'erreur 'NoClassDefFoundError: junit/textui/ResultPrinter'. Cliquez sur MyTest sous JUnit et appuyez sur '-' en haut à gauche. Cela a permis à MyTest de parcourir le périphérique sans erreur.

1
flobacca

Toutes les réponses sont bonnes-

Assurez-vous que le répertoire de test est enregistré dans les sourcesSets.

Android{
    ...

    defaultConfig {
         ...
         testInstrumentationRunner "Android.support.test.runner.AndroidJUnitRunner"
    }


    sourceSets {
        androidTest {
            Java.srcDirs = ['src/androidTest/Java']
        }
    }
}

dependencies{
    ... 
    androidTestCompile 'junit:junit:4.12'
    androidTestCompile 'com.Android.support.test:runner:0.5'
}
0
Manisha

J'ai eu ce problème à deux reprises après avoir modifié certains plugins et dépendances build.gradle

Allumer et éteindre simplement Android Studio a résolu le problème pour moi (versions 2.1.2 et 2.2).

0
Tom