2013-02-11 4 views
1

У меня есть проект Android, в котором у меня есть несколько действий, а также некоторый обычный Java-код, и все, что я хотел бы проверить с помощью Junit. Я создал проект Android Junit вместе с моим обычным проектом Android и включил библиотеки Junit 4, чтобы я мог запускать как тесты андроида junit, так и обычные тесты junit.Проблема с протоколированием и тестированием Junit в проекте Andorid Junit

Все работало нормально, т. Е. Тесты Junit запускались и проходили, пока я не попытался добавить запись в мой основной проект, используя SLF4J для Android. Теперь всякий раз, когда я пытаюсь запустить тест Junit я получаю сообщение об ошибке:

java.lang.NoClassDefFoundError: android/util/Log 
... 
Caused by: java.lang.ClassNotFoundException: android.util.Log 

Кто-нибудь есть какие-либо идеи относительно того, почему происходит эта ошибка? Если есть лучший способ настроить мой проект, чтобы сделать возможным тестирование Junit и Android Junit, я все уши!

Спасибо!

+0

Я действительно предпочитаю Robolectric для тестирования устройств Android: http://pivotal.github.com/robolectric/ Не уверен, хотя, если это поможет вашей реальной проблеме. – Alfergon

+0

Спасибо за ввод! Я изучу использование Robolectric. Но, как вы сказали, я не уверен, что он будет решать эту проблему. – Qrank

ответ

3

Если вы используете тесты JUnit на JVM своего хоста, вы не сможете получить доступ к классам Android, таким как android.util.Log. android.jar обеспечивает только заглушки.

+2

Я исправил это, добавив пакет «android.util» в свой тестовый проект, а затем скопировал подписи «Log.class» (из Open Declaration, F3) в «Log.java», затем bam, больше никаких ошибок в моем Тест JUnit. Это сработало для меня, так как я просто занимаюсь какой-то средней одеждой и на самом деле не использую ни один из конкретных классов Android. Вероятно, будет слишком много работы, если ваш код ссылается на много пространства имен 'android.', но в этом случае вы, вероятно, захотите протестировать в AVD. –

Смежные вопросы