0

我目前正在使用 FEST 或 AssertJ 进行断言。我遇到了一个我想断言流动数组的结:

[1,2,2,2,2,2,2]

那么我该如何写这样的断言

assertThat(arr).contains(1,atIndex(0)).containsTheOthers(2)

我在 FEST 中没有看到 containsOthers,或者我错过了同等的东西?我有点惊讶 FEST 或 AssertJ 不能断言从某个指定索引开始的索引范围,因为它们强调流畅简洁的断言代码。还是有好的选择?

到目前为止,我必须将它分成两个断言并手动取出第一个元素进行检查,然后取出其他元素进行检查,总共三行。那是一团糟。

assertThat(arr[0]).contains(1,atIndex(0));
Arrays.copyOfRange(arr,1,arr.length);
assertThat(arr).containsOnly(2);
4

2 回答 2

4

使用 AssertJ,我会写:

assertThat(arr).containsExactly(1,2,2,2,2,2,2);

但请注意,它还会检查元素顺序。

仅供参考,AssertJ 还提供这些“包含”断言:

  • 包含序列
  • 包含子序列
  • 仅包含一次

看看int 数组断言 javadoc

于 2013-11-30T16:10:46.827 回答
-1

为什么要把事情复杂化?最简单的写法是:

assertEquals(new int[]{1,2,2,2,2,2,2}, arr);

否则,如果可以有任意数量的 2,则将其拆分为两个断言的第二个解决方案似乎是明智的。

于 2013-10-09T11:27:30.130 回答