This has already been processed for you by the framework.
Take a small example (very bad code): import static org.junit.Assert. *;
import org.junit.Test; public class TestExpect { @Test(expected=MyException.class) public void test() throws MyException { new Foo().foo(); } }
With two exception classes MyException and MyExtendedException inheriting from the previous one and a simple Foo class like this:
public class Foo { public void foo() throws MyException{ throw new MyExtendedException(); } }
Running a test using an Eclipse runner prints a green bar because the test raises a single instance of Myexception (this is the ratio in POO)
If you prefer to read the source code, this is exxcerpt from the Junit source code (ExpectException.java):
@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()); }
romje
source share