Кажется, что библиотека не предоставляет опцию для утверждения описанного вами способа (даже AbstractIntArrayAssert
не позволяет это сделать), но вы можете:
1) использовать AbstractIterableAssert#allMatch(Predicate)
assertThat(asList(0, 2, 3))
.allMatch(i -> i > 0);
2) Если вы действительно хотите использовать что-то вроде isGreaterThan
на ListAssert
, вы можете создать пользовательский ListAssert
:
public class CustomListAssert<E> extends ListAssert<E> {
public static <E> CustomListAssert<E> assertThat(List<E> list) {
return new CustomListAssert<>(list);
}
public CustomListAssert(List<? extends E> actual) {
super(actual);
}
public IntListAssert extractingInt(ToIntFunction<E> mapper) {
return new IntListAssert(actual.stream()
.mapToInt(mapper).boxed().collect(toList()));
}
}
public class IntListAssert extends ListAssert<Integer> {
public IntListAssert(List<Integer> actual) {
super(actual);
}
public IntListAssert allGreaterThan(int i) {
allMatch(n -> n > i);
return this;
}
}
И используйте это так:
@Test
public void test() {
CustomListAssert.assertThat(asList(0, 2, 3))
.extractingInt(i -> i * 2)
.allGreaterThan(0);
}
Что в моем случае дает:
java.lang.AssertionError:
Expecting all elements of:
<[0, 4, 6]>
to match given predicate but this element did not:
<0>