JUnit-test Versagen, obwohl erwartete exception geworfen wird

Ich kann nicht scheinen, um herauszufinden, warum einer meiner tests fehlschlägt.

Hier ist der test:

@Test(expected = IllegalArgumentException.class)
public void complainsIfFromLocIsDifferentObject() throws Throwable {
    board.set(make(), 1, 3); //Creates different rook from 'piece'
    assertFalse("ChessPiece Test 2", piece.isValidMove(getValidMove(1, 3), board));
}

Habe ich einen Haltepunkt setzen und gegangen durch den Prozess mehrere Male. Es geht in die zweite wenn-Anweisung in der ChessPiece Klasse, und scheint die Ausnahmen. Der Prozess geht dann zurück zum Rook Klasse aus und gibt false zurück unter die super block.

Alle Ideen, was ist passiert? Dank

Relevante code:

public class Rook extends ChessPiece {

    @Override
    public boolean isValidMove(Move m, IChessBoard b) {
        if (super.isValidMove(m, b) == false)
            return false;

        //Add logic specific to rook
        if(m.fromRow == m.toRow || m.fromColumn == m.toColumn)
            return true;
        else 
            return false;
    }
}


public abstract class ChessPiece implements IChessPiece {

    @Override
    public boolean isValidMove(Move m, IChessBoard b) {

        //Verify that there is a piece at the origin
        if (b.pieceAt(m.fromRow,m.fromColumn) == null)
            throw new IllegalArgumentException();

        //Verify that this piece is located at move origin
        IChessPiece piece = b.pieceAt(m.fromRow, m.fromColumn);
        if (this != piece)
            throw new IllegalArgumentException();
     }
}
  • Es ist sehr schwer, zu verstehen, was Los ist, nur aus der teilweisen code, den Sie gegeben haben. Können Sie vereinfachen, es auf ein kurzes, aber vollständiges Beispiel? Und wenn Sie erwarten, dass isValidMove eine Ausnahme, warum sollte Sie auch haben, eine Behauptung (die Sie nicht erreichen)?
  • Ach ja, und deine ChessPiece.isValidMove Umsetzung ist Ungültiger code - es nichts zurückgibt. Schlägt vor, dass Sie nicht die Ausführung des Codes die du gepostet hast.
  • Was bedeutet die testfailure sagen?
  • Sicher, ich habe gespart, weil ich nicht wollen Seiten code. Dies ist ein Spiel des Schachs. Was hier passiert ist, Teste ich meine move-Methode. Ich bin Platzierung einer neuen Marke rook an einer Stelle und dann versuchen zu bewegen, ein anderes "Stück" von dieser position. Ich bin mir nicht sicher, warum die Behauptung ist da, der test wurde von meinem Lehrer. Und das ist nicht die ganze Spielmarke.isValidMove, nur Teile relevant für diesen test.
  • Ich erhalte die Meldung "java.lang.AssertionError:Expected exception: java.lang.IllegalArgumentException
InformationsquelleAutor JZachow | 2013-03-08
Schreibe einen Kommentar