Исключение в потоке "main" java.lang.NoClassDefFoundError: junit/textui/ResultPrinter

Я пытаюсь скомпилировать свой Android-проект в Android Studio 0.3.0. Сегодня я получаю следующую ошибку:

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

Выполнение некоторых поисков в Интернете приводит меня к тому, что эта проблема как-то связана с JUnit. Тем не менее, я не использую JUnit в своем проекте. Может, я случайно включил какой-то вариант? В этом случае, как отключить модульное тестирование в моем проекте? Есть идеи?

Ответ 1

Наконец нашел его. Он находится в диалоговом окне "Run/Debug Configurations". Отключен JUnit и он снова скомпилируется.

Ответ 2

Обычно эта проблема возникает из-за неправильного типа теста: Junit вместо Android Test Select Android test instead of JUnitSelect Android test instead of JUnit

Ответ 3

Для стандартных тестов JUnit вам не хватает библиотеки JUnit, попробуйте добавить это в build.gradle:

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

И убедитесь, что вы помещаете тесты в каталог "test" параллельно с "основным" пакетом (контрольные тесты входят в "androidTest", но это другая настройка).

Ответ 4

Заставить проект "синхронизировать" через меню: Инструменты > Android > Проект синхронизации с Gradle Файлы или заставить проект "синхронизировать", сделав фальшивое изменение в файле build.gradle(добавьте пробел, а затем удалите его, а затем нажмите "Синхронизировать сейчас" ).

Ответ 5

В моих конфигурациях Run/Debug у меня был MyTest под AndroidTests и под JUnitTests. MyTest под AndroidTests был настроен правильно, но у меня все еще есть ошибка "NoClassDefFoundError: junit/textui/ResultPrinter". Нажмите на MyTest под JUnit и нажмите "-" в левом верхнем углу. Это позволило MyTest запустить устройство, избавившись от ошибки.

Ответ 6

Я дважды сталкивался с этой проблемой после изменения некоторых плагинов и зависимостей build.gradle.

Просто отключив и снова включив Android Studio, я исправил его для меня (версии 2.1.2 и 2.2).

Ответ 7

Все ответы хороши -

Убедитесь, что у исходных наборов есть зарегистрированный тестовый каталог.

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'
}

Ответ 8

Просто поставив решение, которое сработало для меня, это нужно попробовать, если вы настраиваете среду в первый раз:

Для окон: 1) в переменных среды добавляются новые "системные переменные", ANDROID_SDK_HOME = D:\Program Files\android-sdk-windows (выберите свой домашний каталог android sdk)

2) изменить системные переменные Path, добавить "% Android_SDK_HOME%\tools;"