2010-05-02 5 views
2

Я пытаюсь разработать внешнюю библиотеку (не уверен, что это правильный термин), чтобы обеспечить предварительно упакованные функции в проектах Android. Работая в Eclipse, я добавил соответствующий файл android.jar в путь сборки, и все доволен как при редактировании, так и при компиляции.Могу ли я использовать библиотеки android.os. * В автономном проекте?

Тем не менее, когда я использую классы Handler и Message для Android (android.os.Handler, android.os.Message) для межпоточной связи, я получаю исключения, если я не работаю в приложении Android, на эмуляторе или Устройство. Я больше не могу тестировать свою библиотеку «автономным» способом без необходимости проходить через целевую Android-цель.

Есть ли какой-либо способ включить эти два класса Android и все еще иметь возможность протестировать мою библиотеку отдельно? Нужен ли мне источник Android? Или это потребует какой-то условной компиляции ручного размаха?

ответ

4

Есть ли способ для меня, чтобы включить эти два Android-классы и все еще быть в состоянии проверить мою библиотеку автономно?

Не с готовностью, любыми средствами я могу придумать.

Нужно ли иметь источник Android ?

Я не знаю, где еще вы получите реализацию. Но, что более важно, эти вещи не предназначены для работы изолированно за пределами ОС, но вы можете просто взять класс Cocoa или два и потянуть их в свою библиотеку Objective-C и ожидать, что они будут работать в окне Windows.

С манжетой, ничего не зная о том, что вы строите, я бы сделал любую зависимость, которую вы вводите на Handler, и Message быть более вместимой. Тестируйте вне Android, используя чистую реализацию Java, возможно, даже некоторые из них. Тестирование внутри Android с использованием реальной реализации.

+0

Я полагал, что это, вероятно, будет случаем - хотя Я не уверен, как я собираюсь сделать зависимые части моей библиотеки «подключаемыми». На данный момент я думаю о наследовании рассматриваемого класса с тонким классом-оболочкой, а затем переопределяя части, которые требуют использования Handler и Message. Тестовый код будет создавать экземпляр родительского класса (чистой Java) напрямую, в то время как приложения для Android будут создавать экземпляр оболочки. Звучит ли это разумно? – mtbkrdave

+0

Да, от манжеты, что кажется разумным. – CommonsWare

+0

Спасибо - я пробовал это, и он отлично работает! Ссылка на то, как я это сделал, ниже; вы можете увидеть, где обработчик и код сообщения были удалены из класса DeaconService и перемещены в класс оболочки Deacon. В очередной раз благодарим за помощь!! http://github.com/davidrea/Deacon/commit/117f7586b37d3d994afc7f948aefa4e5a5000856 – mtbkrdave

1

Вы можете попробовать Lib Robolectric, который реализует андроид API, чтобы вы могли создать JUnit тесты для изолированной коды у вас есть:

http://robolectric.org/

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