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); } }