package junit.extensions;
import junit.framework.*;
/**
* A TestCase that expects an Exception of class fExpected to be thrown.
* The other way to check that an expected exception is thrown is:
* <pre>
* try {
* shouldThrow();
* }
* catch (SpecialException e) {
* return;
* }
* fail("Expected SpecialException");
* </pre>
*
* To use ExceptionTestCase, create a TestCase like:
* <pre>
* new ExceptionTestCase("testShouldThrow", SpecialException.class);
* </pre>
*/
public class ExceptionTestCase extends TestCase {
Class<?> fExpected;
public ExceptionTestCase(String name, Class exception) {
super(name);
fExpected= exception;
}
/**
* Execute the test method expecting that an Exception of
* class fExpected or one of its subclasses will be thrown
*/
protected void runTest() throws Throwable {
try {
super.runTest();
}
catch (Exception e) {
if (fExpected.isAssignableFrom(e.getClass()))
return;
else
throw e;
}
fail("Expected exception " + fExpected);
}
}