2013-08-11 2 views
2

Проблемы с выполнением пользовательского сочетания hamcrest для использования в Grails. Запуск тестов с использованием моего Искателя терпит неудачу с:Пользовательский сопоставитель hamcrest в модульных тестах

java.lang.NoSuchMethodError: org.hamcrest.Matcher.describeMismatch(Ljava/lang/Object;Lorg/hamcrest/Description;)V 

После немного прибегая к помощи его, кажется, что это вызвано порядка загруженных библиотек: JUnit и Hamcrest. Я добавил следующую зависимость к моему BuildConfig.groovy:

dependencies { 
    test 'org.hamcrest:hamcrest-all:1.3' 
} 

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

Использование Grails 2.2.1

ответ

4

Это зависит от версии JUnit вы используете. Вы можете проверить это, посмотрев в lib/junit/junit/jars. Я думаю, что по умолчанию это 4.10. Если да, обновите до 4.11. Вы можете сделать это, указав Явно его в BuildConfig.groovy я считаю:

dependencies { 
    test 'junit:junit:4.11' 
    test 'org.hamcrest:hamcrest-all:1.3' 
} 

Для объяснения до 4,11 версии библиотек Hamcrest были включены в дистрибутив JUnit. Это уже не так с 4.11, и иногда вы получаете несоответствие между версиями классов.

+0

Это было сделано! Просто не забудьте обновить зависимости после этого изменения. – raaputin