1 package junit.extensions;
2
3 import junit.framework.*;
4
5 /***
6 * A TestCase that expects an Exception of class fExpected to be thrown.
7 * The other way to check that an expected exception is thrown is:
8 * <pre>
9 * try {
10 * shouldThrow();
11 * }
12 * catch (SpecialException e) {
13 * return;
14 * }
15 * fail("Expected SpecialException");
16 * </pre>
17 *
18 * To use ExceptionTestCase, create a TestCase like:
19 * <pre>
20 * new ExceptionTestCase("testShouldThrow", SpecialException.class);
21 * </pre>
22 */
23 public class ExceptionTestCase extends TestCase {
24 Class fExpected;
25
26 public ExceptionTestCase(String name, Class exception) {
27 super(name);
28 fExpected= exception;
29 }
30 /***
31 * Execute the test method expecting that an Exception of
32 * class fExpected or one of its subclasses will be thrown
33 */
34 protected void runTest() throws Throwable {
35 try {
36 super.runTest();
37 }
38 catch (Exception e) {
39 if (fExpected.isAssignableFrom(e.getClass()))
40 return;
41 else
42 throw e;
43 }
44 fail("Expected exception " + fExpected);
45 }
46 }