2012-04-10 3 views
2

Я немного новичок в Android и много часов борюсь за то, как включить в тестовый проект Hamcrest. Код выглядит так, как будто он должен запускаться в Eclipse, без ошибок. Но когда я запускаю тест, классы Hamcrest не загружаются. Я получаю «NoClassDefFoundError: org.hamcrest.Matchers».Как использовать сочетания Hamcrest с jUnit на Android

Я провел последние 3 часа, просматривая форумы, полагая, что кто-то столкнулся с этим раньше, но не повезло. Я должен делать что-то глупое, так как среда IDE может видеть классы, но среда выполнения не работает.

Вот исходный тест:

import static org.hamcrest.MatcherAssert.assertThat; 
import static org.hamcrest.Matchers.equalTo; 
import org.hamcrest.Matcher; 
import android.test.InstrumentationTestCase; 

public class AppDescLoaderTest extends InstrumentationTestCase { 

    public void testHamcrest() { 
    assertThat(3, equalTo(3)); 
    } 
} 

Я попытался добавить Hamcrest-все-1.2.jar как библиотека и как внешняя баночка. Тот же результат в обоих направлениях, код отлично выглядит в среде IDE, но не загружает классы во время выполнения.

Моя теория заключается в том, что hamcrest.jar не собирается с файлом .apk, и поэтому его классы не загружаются. Если это так, как мне заставить его перейти к андроиду вместе с файлом .apk?

ответ

5

Предполагая, что вы на текущих инструментов R17, то ...

I've tried adding the hamcrest-all-1.2.jar as a Library and as an external jar. Same result both ways, code looks fine in IDE but fails to load classes at runtime.

Шаг # 1: Отменить все это.

Шаг №2: Создайте каталог в корне вашего проекта.

Шаг № 3: Поместите свой JAR в libs/.

И все готово. Раньше это был рецепт только для сборки командной строки, но теперь это рецепт для сборников на основе Eclipse.

+0

Это сработало. Я также должен был указать ссылку на банку как внешнюю банку, или IDE не увидит классы. Теперь я получаю «Преобразование в формат Dalvik с ошибкой 1» –

+0

@wannabetester: «Я также должен был указать ссылку на банку как внешнюю банку, или среда IDE не увидит классы». - это говорит о том, что вы не используете версию средств разработки R17. Удалите ссылку в качестве внешнего JAR. Щелкните правой кнопкой мыши проект, выберите «Путь сборки»> «Настроить путь сборки», перейдите на вкладку «Библиотеки», нажмите кнопку «Добавить JARs ...» (обратите внимание, * не * Добавить внешние JAR ...), найдите JAR внутри вашего проекта ' libs/'и добавьте его. – CommonsWare

+0

Хорошо, я удалил файл jar из пути сборки в целом, и среда IDE теперь распознает .jar просто потому, что находится в папке/libs. По-видимому, все, что мне нужно было сделать, это обновить IDE, чтобы перепроверить каталог/libs. Тем не менее, я все еще получаю ошибку Dalvik. Я считаю, что есть другие сообщения об этой проблеме. Если вы знаете решение, пожалуйста, передайте его. Тем временем я постараюсь это найти. –