7

jUnit 4.8.1 には、2 つのブール配列が等しいかどうかをテストするためのサポートが含まれていないことに気付きました。他にも多数の assertArrayEquals がありますが、2 つのブール配列を受け取るものはありません。

これを行う適切な方法はありますか?私の現在の考えは、配列を反復処理して次のようなものを使用する必要があるということです

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

これを行うためのよりクリーンな方法はありますか?

4

2 に答える 2

9

を使用Arrays.equals()して 2 つの配列を比較し、それらが等しいことをアサートできます。

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
于 2012-09-19T18:53:49.563 に答える
2

この機能は、2014 年 12 月にリリースされた JUnit 4.12 で追加されました。

assertArrayEquals(boolean[] expecteds, boolean[] actuals)
assertArrayEquals(String message, boolean[] expecteds, boolean[] actuals)

参考までに: これはコミットを含む PR: https://github.com/junit-team/junit/pull/632

于 2015-01-27T10:21:23.907 に答える