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, чем ваш основной проект, и это вызывает такие странные ошибки.