Я столкнулся с https://code.google.com/p/hamcrest/issues/detail?id=130, чтобы добавить синтаксис сахара для совпадений Hamcrest. Но идея была отвергнута разработчиками Hamcrest.Как использовать (примитивный) автобоксинг/расширение с помощью Hamcrest?
Любые другие умные идеи, чтобы сделать тесты более читабельными, избегая необходимости вводить L за длинными?
@Test
public void test1() {
int actual = 1;
assertThat(actual, is(1));
}
@Test
public void test2() {
long actual = 1L;
assertThat(actual, is(1)); // fails as expected is <1> but result was <1L>
// assertThat(actual, is(1L)); off course works..
}
@Test
public void test3() {
Long actual = new Long(1);
assertThat(actual, is(1)); // fails as expected is <1> but result was <1L>
}
ОБНОВЛЕНИЕ
Смотрите также ниже различий при сравнении, например, int и long с использованием Java laguage по умолчанию (==), стандартного junit assert (assertTrue) и метода hamcrest is(). Кажется, странный hamcrest doest не поддерживает сопоставление/сравнение long vs int, а остальное.
@Test
public void test2() {
long actual = 1L;
int expected = 1;
assertTrue(expected == actual); // std java succeeds
assertEquals(expected, actual); // std junit succeeds
assertThat(actual, is(expected)); // hamcrest fails: Expected: is <1> but: was <1L>
}
Simple is() - без явного добавления L - не будет работать, как описано в примере –