Java – How to assert that a certain exception is thrown in JUnit 4 tests


How can I use JUnit4 idiomatically to test that some code throws an exception?

While I can certainly do something like this:

public void testFooThrowsIndexOutOfBoundsException() {
  boolean thrown = false;

  try {
  } catch (IndexOutOfBoundsException e) {
    thrown = true;


I recall that there is an annotation or an or something that is far less kludgy and far more in-the-spirit of JUnit for these sorts of situations.

Best Solution

It depends on the JUnit version and what assert libraries you use.

The original answer for JUnit <= 4.12 was:

@Test(expected = IndexOutOfBoundsException.class)
public void testIndexOutOfBoundsException() {

    ArrayList emptyList = new ArrayList();
    Object o = emptyList.get(0);


Though answer has more options for JUnit <= 4.12.

Reference :