我在测试中使用了AssertJ,我注意到有一个方法可以检查List<T>
是否排序:
public static <T> void sorted(final List<T> actual) {
try {
assertThat(actual).isSorted();
} catch (AssertionError e) {
LOGGER.error(e.getMessage(), e);
throw e;
}
}
是否有办法检查列表是否按降序排序?
我知道guava提供了Ordering.natural().reverse().isOrdered(values)
,但是我想利用AssertJ的assert消息,因为它在调试方面确实有很大帮助。
group is not sorted because element 5:
<"4000366190001391">
is not less or equal than element 6:
<"4000206280001394">
group was:
<["4000206280001363",
"4000206280001364",
"4000206280001365",
"4000206280001373",
"4000206280001388",
"4000366190001391",
"4000206280001394",
"4000366190001401",
"4000206280001403",
"4000206280001405",
....]>
2条答案
按热度按时间nbysray51#
是的,还有一个方法
isSortedAccordingTo
,它接受一个Comparator
.你需要将泛型类型参数改为
<T extends Comparable<T>>
,即一个具有自然排序的类型。那么Comparator.reverseOrder()
可以说是用来Assert它应该是其自然排序的反向。如果没有这个约束,你将试图反转一些未知的/未指定的排序,这将导致编译器错误。avkwfej42#