2012-09-19 45 views
7

我剛剛注意到,jUnit 4.8.1不包括支持測試兩個布爾數組是否相等。有大量的其他assertArrayEquals,但沒有采取兩個布爾數組。jUnit測試兩個布爾數組

有沒有適當的方法來做到這一點?我現在的想法是,我不得不遍歷數組,並使用類似

Assert.assertTrue(arrayOne[i] == arrayTwo[i]); 

有一個更清潔的方式做到這一點?

+0

不,你比較引用 – Ilya

+2

'assertTrue(Arrays.equals(array1,array2));' –

回答

9

您可以使用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 
+0

Perfecto,謝謝! –

+0

這個問題是,如果數組不同,你的診斷程序不會告訴你什麼是錯誤的,你將不得不做額外的工作來找出它們爲什麼不同 – tddmonkey

2

功能已在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