2013-10-09 40 views
0

我目前使用FEST或AssertJ進行斷言。 和我碰上,我想斷言流動陣列結:如何在代碼中表示這個特殊的數組斷言?

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

那麼,如何寫這樣

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

斷言我沒有看到containsOthers中FEST或我錯過了什麼等於? 我有點驚訝FEST或者AssertJ不能從一些指定的索引開始索引範圍的開始,因爲它們強調流利的簡潔的斷言代碼。 還是有很好的選擇?

到目前爲止,我必須將它分成兩個斷言,並手動取出第一個元素來檢查,然後n取出其他元素來檢查,總共三行。這是一團糟。

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

回答

-1

爲什麼使事情複雜化?最簡單的方式來寫,這將是:

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

否則,如果可以有任意數量的2S,你的第二個解決方案,它分成兩個斷言似乎是合理的。

+1

這不是FEST或AssertJ聲明... – MariuszS

4

使用AssertJ,我會寫:

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

但是請注意,它也將檢查元素順序。

僅供參考,AssertJ還提供這些 「含有」 斷言:

  • containsSequence
  • containsSubSequence
  • containsOnlyOnce

看一看在int array assertions javadoc

相關問題