我目前正在使用FEST或AssertJ进行断言。 我遇到了一个想要断言流动阵列的结:
[1,2,2,2,2,2,2]
那么如何编写像
这样的断言assertThat(arr).contains(1,atIndex(0)).containsTheOthers(2)
我在FEST中看不到包含其他人,或者我错过了相同的东西? 我有点惊讶FEST或者AssertJ无法断言从某个指定索引开始的索引范围,因为它们强调流畅简洁的断言代码。 还是有好的选择?
到目前为止,我必须将它分成两个断言并手动取出第一个要检查的元素,并且n取出其他要检查的,总共三行。那太乱了。
assertThat(arr[0]).contains(1,atIndex(0));
Arrays.copyOfRange(arr,1,arr.length);
assertThat(arr).containsOnly(2);
答案 0 :(得分:4)
使用AssertJ,我会写:
assertThat(arr).containsExactly(1,2,2,2,2,2,2);
但请注意,它还会检查元素顺序。
仅供参考,AssertJ还提供了这些“包含”断言:
答案 1 :(得分:-1)
为什么复杂化?写这个的最简单方法是:
assertEquals(new int[]{1,2,2,2,2,2,2}, arr);
否则,如果可以有任意数量的2,那么将其分成两个断言的第二个解决方案似乎是明智的。