ZX-Asm v3.1 + исправленная HiSoft-C v1.1 / figFORTH / BetaBasic 3.0
Я не использую Hamcrest, но очевидно, что int
не является объектом. Вместо этого используйте Integer
, например
Assert.assertThat(Integer.valueOf(0), is(lessThan(1)));
Я полагаю, вы используете версию Java <= 1.4, где автоматическая упаковка не работает. Следовательно, вам нужно сначала явное преобразование в Integer
.
Это очень странная проблема. Думаю, нам нужна дополнительная информация, так как она должна работать правильно. Я попытался воспроизвести его с помощью JUnit 4.4 и Hamcrest 1.1 (немного старше, но это то, что я использую в моем текущем проекте, поэтому его было легко протестировать), и он работал отлично.
Единственное отличие, которое я заметил, заключается в том, что мой Eclipse импортировал org.hamcrest.Matchers.lessThan
вместо org.hamcrest.number.OrderingComparisons.lessThan
, но когда я использовал последний, он также работал безупречно.
Это может быть вызвано тем, что вы используете старую версию Hamcrest или JUnit (какие версии вы на самом деле используете? Вы еще не упомянули об этом). Странно то, что вы получали ошибку, даже если добавили явное приведение к Integer
. Который'
Я думаю, что проблема в вашем методе assertThat. Если там написано
void assertThat(Object item, Matcher<Object> matcher) { ... }
, то вам нужно изменить его на:
void <T> assertThat(T item, Matcher<? super T> matcher) { ... }
Может быть, ваша библиотека JUnit устарела по сравнению с вашей библиотекой Hamcrest? Вы сами их построили? Возможно, у вас есть несколько копий JUnit или Hamcrest в пути к классам?