检查列表在 Hamcrest 中是否不为空
2022-08-31 07:28:08
我想知道是否有人知道一种方法来检查列表是否为空,使用和?assertThat()
Matchers
我可以看到的最好的方式就是使用JUnit:
assertFalse(list.isEmpty());
但我希望在Hamcrest有办法做到这一点。
我想知道是否有人知道一种方法来检查列表是否为空,使用和?assertThat()
Matchers
我可以看到的最好的方式就是使用JUnit:
assertFalse(list.isEmpty());
但我希望在Hamcrest有办法做到这一点。
嗯,总是有
assertThat(list.isEmpty(), is(false));
...但我猜这不是你的意思:)
或者:
assertThat((Collection)list, is(not(empty())));
empty()
是类中的静态。请注意,由于 Hamcrest 1.2 的不稳定泛型,需要将 转换为 。Matchers
list
Collection
以下进口产品可与 hamcrest 1.3 一起使用
import static org.hamcrest.Matchers.empty;
import static org.hamcrest.core.Is.is;
import static org.hamcrest.core.IsNot.*;
这在Hamcrest 1.3中已修复。下面的代码编译,不生成任何警告:
// given
List<String> list = new ArrayList<String>();
// then
assertThat(list, is(not(empty())));
但是,如果您必须使用旧版本 - 而不是buged,则可以使用:empty()
hasSize(greaterThan(0))
(import static org.hamcrest.number.OrderingComparison.greaterThan;
或import static org.hamcrest.Matchers.greaterThan;
)
例:
// given
List<String> list = new ArrayList<String>();
// then
assertThat(list, hasSize(greaterThan(0)));
上述解决方案最重要的一点是它不会生成任何警告。如果要估计最小结果大小,则第二种解决方案更有用。