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)
それは、エラーの原因として、この行に私をリダイレクトします:テストを実行する場合しかし、私はこのエラーを取得する
EDITassertEquals(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メソッドには適切ではありません。
私はちょっと試して、これを思いつきました:元の投稿を編集しました – Yoey
どのバージョンのJUnitを使用しますか? –
BlueJがJUnitバージョン4.11をインポートしました。インターフェイスに慣れるためにBlueJを使用することをお勧めします。私たちの試験はBlueJで行われます。編集後のコードは正しいですか? – Yoey