2017-11-23 5 views
0

2つのint配列と1つのint値を入力する必要があるメソッドを記述しました。このメソッドは両方の配列を渡り、各インデックスをint値で割ります。両方の最初のインデックスが値でdvididableである場合、真と偽の値を第3(新しい)ブール値配列に格納します。期待されるブール値配列を持つJUnitは機能しません

public class PIArrays { 

    public boolean[] pairwiseContainsDividableBy(final int[] a, final int[] b, 
    final int divisor) { 

    boolean[] result = new boolean [a.length]; 

    for(int i = 0; i < a.length; i++){ 
      if(a[i]%divisor == 0 && b[i]%divisor == 0){ 
       result[i] = true; 
      }else{ 
       result[i] = false; 
      } 
     } 
    return result; } 
} 

= {4,8,12}場合、B = {24,19,18}と除数= 4の結果は{TRUE、FALSE、偽}となります。これはすべて正常に動作します。繰り返しますが、テスト方法に問題があります。

public class PIArraysTest { 

@Test 
public void testPairwiseContainsDividableBy() 
{ 
    PIArrays pIArrays1 = new PIArrays(); 
    assertEquals(new boolean[] {true,false,false}, 
     pIArrays1.pairwiseContainsDividableBy(new int[] {4,8,12},new int[] 
     {24,19,18}, 4)); 


    } 
} 

コンパイルはもう一度うまくいきます。

expected:<[[email protected]> but was:<[[email protected]> 
--- 
java.lang.AssertionError: expected:<[[email protected]> but was:<[[email protected]> 
at org.junit.Assert.fail(Assert.java:88) 
at org.junit.Assert.failNotEquals(Assert.java:743) 
at org.junit.Assert.assertEquals(Assert.java:118) 
at org.junit.Assert.assertEquals(Assert.java:144) 
at PIArraysTest.testPairwiseContainsDividableBy(PIArraysTest.java:76) 

それは、エラーの原因として、この行に私をリダイレクトします:テストを実行する場合しかし、私はこのエラーを取得する

EDIT
assertEquals(new boolean[] {true,false,false}, 
    pIArrays1.pairwiseContainsDividableBy(new int[] {4,8,12},new int[] 
    {24,19,18}, 4)); 

はので、私は少しを試してみました

@Test 
public void testPairwiseContainsDividableBy() 
{ 
    PIArrays pIArrays1 = new PIArrays(); 
    boolean[] test1 = pIArrays1.pairwiseContainsDividableBy(new int[]{4,8,12},new int[] {24,19,18}, 4); 
    boolean[] result = {true, false, false}; 
    assertArrayEquals(result, test1); 

}

:この思い付きました

この結果、コンパイラエラーが発生します。assertArrayEqualsメソッドには適切ではありません。

答えて

0

assertEquals(Object[], Object[])は配列をアイテムごと比較しません。したがって、それは非難されており、assertArrayEquals(boolean[], boolean[])を使用する必要があります。

少なくともJUnit 4.12が必要です。 (https://github.com/junit-team/junit4/commit/26d34db6c2c12b0fee9ae3d307b3f18fe0ee62da#diff-73eb269f6f932a6bd4cc17c2cfd54571を参照してください)

+0

私はちょっと試して、これを思いつきました:元の投稿を編集しました – Yoey

+0

どのバージョンのJUnitを使用しますか? –

+0

BlueJがJUnitバージョン4.11をインポートしました。インターフェイスに慣れるためにBlueJを使用することをお勧めします。私たちの試験はBlueJで行われます。編集後のコードは正しいですか? – Yoey

関連する問題