我剛剛注意到,jUnit 4.8.1不包括支持測試兩個布爾數組是否相等。有大量的其他assertArrayEquals,但沒有采取兩個布爾數組。jUnit測試兩個布爾數組
有沒有適當的方法來做到這一點?我現在的想法是,我不得不遍歷數組,並使用類似
Assert.assertTrue(arrayOne[i] == arrayTwo[i]);
有一個更清潔的方式做到這一點?
我剛剛注意到,jUnit 4.8.1不包括支持測試兩個布爾數組是否相等。有大量的其他assertArrayEquals,但沒有采取兩個布爾數組。jUnit測試兩個布爾數組
有沒有適當的方法來做到這一點?我現在的想法是,我不得不遍歷數組,並使用類似
Assert.assertTrue(arrayOne[i] == arrayTwo[i]);
有一個更清潔的方式做到這一點?
您可以使用Arrays.equals()
來比較兩個數組,然後斷言它們是等價的。
Assert.assertTrue(Arrays.equals(arrayOne, arrayTwo));
Arrays.equals()
檢查長度和陣列中的每個元素,所以你不會擔心遍歷每個陣列。
還有Assert.assertArrayEquals
,它會給你陣列不同的確切位置。
示例:對於寫爲這樣的測試:
@Test
public void doArrayTest() {
int[] foo = {1, 2, 3};
int[] bar = {4, 5, 6};
assertArrayEquals(foo, bar);
}
其結果將是:
arrays first differed at element [0]; expected:<1> but was:<4>
Expected :1
Actual :4
Perfecto,謝謝! –
這個問題是,如果數組不同,你的診斷程序不會告訴你什麼是錯誤的,你將不得不做額外的工作來找出它們爲什麼不同 – tddmonkey
功能已在JUnit的4.12,這是在2014年十二月釋放
被添加assertArrayEquals(boolean[] expecteds, boolean[] actuals)
assertArrayEquals(String message, boolean[] expecteds, boolean[] actuals)
供參考:這是包含提交的PR: https://github.com/junit-team/junit/pull/632
不,你比較引用 – Ilya
'assertTrue(Arrays.equals(array1,array2));' –