Java.lang.NoClassDefFoundError при запуске теста JUnit в Netbeans

Я создаю приложение Android hello world в Netbeans. Он правильно строится, и я тоже могу запустить эмулятор.

Но при создании и запуске теста Junit я получаю java.lang.NoClassDefFoundError.

Как я могу исправить эту проблему?

Ответы

Ответ 1

Проверьте манифест вашего тестового проекта, например HelloWorldTest/AndroidManifest.xml. Атрибут android:targetPackage разметки instrumentation должен указывать на пакет в вашем приложении, например, com.example.helloworld. Не тестовый пакет вашего тестового проекта (например, com.example.helloworld.test).

Ответ 2

Просто AndroidManifest.xml -> manifest -> package основного приложения должно соответствовать AndroidManifest.xml -> manifest -> instrumentation -> android:targetPackage тестового приложения.

Ответ 3

Полное сообщение об ошибке содержит имя класса, которое не было найдено в пути к классам. Двойную проверку, если путь к классу, который используется для запуска теста, включает в себя все необходимые классы и библиотеки (ваши файлы классов, junit.jar, специфические для Android файлы).

Ответ 4

Я нахожу, что перестроение обычно находит классы (поскольку это проблема класса). Netbeans, похоже, агрессивно компилирует существующие тесты, но основной исходный код (по крайней мере, от настройки maven) не всегда доступен.

Я начал запускать полные сборки, чтобы попробовать это. Возможно, есть плагин, который обращается к этому, но я еще не нашел его.

EDIT: Это может помочь.

Ответ 5

Я не знаю о специфике netbeans, но проблема, вероятно, такая же.

FragmentActivity не может быть протестирован с помощью ActivityInstrumentationTestCase2

Ваш тестовый проект может использовать другую библиотеку совместимости для Android, чем ваш основной проект, и это вызывает такие странные ошибки.