In his recent post the author of fantastic mocking framework Mockito collected few rules about testing exceptions. What caught my attention is the advice to use JUnit rules ( nomen est omen !) for testing exceptions. ExpectedException rule gathers advantages of both expected @Test attribute clarity and try-catch strictness. Here is the example: public class DefaultFooServiceTest { private FooService fooService = new DefaultFooService(); @Rule public ExpectedException exception = new ExpectedException(); @Test public void shouldThrowNpeWhenNullName() throws Exception { //given String name = null; //when exception.expect(NullPointerException.class); fooService.echo(name); //then } } Szczepan claims that ExpectedException fits into given/when/then test template nicely. I disagree! Look at the code snippet above – what is the most natural place to put assertions on exception being thrown? From the obvious reasons it must be the last line before the lin