0

したがって、junit テストでいっぱいのクラスと、バイナリ操作を実行するメソッドでいっぱいのクラスがあります。テストは、特定のポイントで正しい値を持っているかどうかを確認しています。

私が信じているのは戻り値の型であるため、多くのテストに失敗しています。たとえば、私はメッセージを受け取ります

junit.framework.ComparisonFailure: null expected:<[000]> but was <[BinaryNumber@4896b555]>

私がこれを理解している場合、000 を含む配列を探していたが、BinaryNumber (必要な戻り値の型) を取得したと言っています。ここで明確にするために、方法の 1 つを示します。

    public BinaryADT and(BinaryADT y) {
    int[] homeArr = pad(((BinaryNumber) y).getNumber());
    int[] awayArr = ((BinaryNumber) y).pad(getNumber());

    int[] solution = new int[awayArr.length];
    int i = 0;
    String empty = "";

    while(i < solution.length){
        solution[i] = homeArr[i] & awayArr[i];
        i++;
    }
    for(int indexF = 0; indexF < solution.length; indexF++){
        empty = empty + solution[indexF];
    }
    System.out.println(empty);

    return new BinaryNumber(empty);
}

私はこれを正しく理解していますか?そうでない場合は、誰かが説明してもらえますか? また、これは私の宿題のためであることを指摘したいと思いますが、私は答え/誰かが私のためにそれをすることを求めているわけではありません. せいぜい正しい方向へのポイントです。

必要に応じて、喜んで詳細を明らかにします (すべてを行き詰まらせたくありませんでした)。

また、これは私の最初の投稿です。私はフォーマットの提案を守ろうとしましたが、標準以下のものがある場合は申し訳ありません.

ここで提案されているように、テスト方法は次のとおりです

public void testAnd1()
{
    BinaryADT x = new BinaryNumber("111");
    BinaryADT y = new BinaryNumber("000");
    BinaryADT z = x.and(y);
    assertNotSame(x,z);
    assertNotSame(y,z);
    assertEquals("000",z.toString());
}
4

2 に答える 2

1

ClassName@SomeNumberのような "toString()" の出力が表示されるときはいつでも、toString() メソッドがそのクラスに実装されていないことを確認できます (toString() メソッドの実装自体がこのようでない場合を除く)。

あなたの場合、期待値は [000] ですが、[BinaryNumber@4896b555] を取得しています。

BinaryNumber クラスに toString() メソッドを実装し、 assertEquals() が期待するように、このメソッドから値を返すようにしてください。これで問題は解決するはずです。

于 2013-01-25T04:28:11.127 に答える
0

テストコードを見せてもらえますか?

1.期待する型が実際の型と異なる。

2.BinaryADT クラスは toString メソッドをオーバーライドしませんでした。

于 2013-01-25T02:13:33.417 に答える