blob: ddfef0724245dd8d6ee1fe7a9c663b1506c95f31 [file] [log] [blame]
/**
*
*/
package org.junit.internal.runners.statements;
import org.junit.internal.AssumptionViolatedException;
import org.junit.runners.model.Statement;
public class ExpectException extends Statement {
private Statement fNext;
private final Class<? extends Throwable> fExpected;
public ExpectException(Statement next, Class<? extends Throwable> expected) {
fNext= next;
fExpected= expected;
}
@Override
public void evaluate() throws Exception {
boolean complete = false;
try {
fNext.evaluate();
complete = true;
} catch (AssumptionViolatedException e) {
throw e;
} catch (Throwable e) {
if (!fExpected.isAssignableFrom(e.getClass())) {
String message= "Unexpected exception, expected<"
+ fExpected.getName() + "> but was<"
+ e.getClass().getName() + ">";
throw new Exception(message, e);
}
}
if (complete)
throw new AssertionError("Expected exception: "
+ fExpected.getName());
}
}