Hamcrest меньше не компилирует

ZX-Asm v3.1 + исправленная HiSoft-C v1.1 / figFORTH / BetaBasic 3.0

7
задан ripper234 2 December 2009 в 15:32
поделиться

3 ответа

Я не использую Hamcrest, но очевидно, что int не является объектом. Вместо этого используйте Integer , например

Assert.assertThat(Integer.valueOf(0), is(lessThan(1)));

Я полагаю, вы используете версию Java <= 1.4, где автоматическая упаковка не работает. Следовательно, вам нужно сначала явное преобразование в Integer .

2
ответ дан 7 December 2019 в 05:24
поделиться

Это очень странная проблема. Думаю, нам нужна дополнительная информация, так как она должна работать правильно. Я попытался воспроизвести его с помощью JUnit 4.4 и Hamcrest 1.1 (немного старше, но это то, что я использую в моем текущем проекте, поэтому его было легко протестировать), и он работал отлично.

Единственное отличие, которое я заметил, заключается в том, что мой Eclipse импортировал org.hamcrest.Matchers.lessThan вместо org.hamcrest.number.OrderingComparisons.lessThan , но когда я использовал последний, он также работал безупречно.

Это может быть вызвано тем, что вы используете старую версию Hamcrest или JUnit (какие версии вы на самом деле используете? Вы еще не упомянули об этом). Странно то, что вы получали ошибку, даже если добавили явное приведение к Integer . Который'

0
ответ дан 7 December 2019 в 05:24
поделиться

Я думаю, что проблема в вашем методе assertThat. Если там написано

void assertThat(Object item, Matcher<Object> matcher) { ... }

, то вам нужно изменить его на:

void <T> assertThat(T item, Matcher<? super T> matcher) { ... }

Может быть, ваша библиотека JUnit устарела по сравнению с вашей библиотекой Hamcrest? Вы сами их построили? Возможно, у вас есть несколько копий JUnit или Hamcrest в пути к классам?

1
ответ дан 7 December 2019 в 05:24
поделиться
Другие вопросы по тегам:

Похожие вопросы: