اگر از JUnit 4.7 استفاده می کنید، شما می توانید از ExpectedException استفاده کنید.
@RunWith(JUnit4.class)
public class FooTest {
@Rule
public ExpectedException exception = ExpectedException.none();
@Test
public void doStuffThrowsIndexOutOfBoundsException() {
Foo foo = new Foo();
exception.expect(IndexOutOfBoundsException.class);
foo.doStuff();
}
}
همچنین یک راه دیگر :
@Test(expected=IndexOutOfBoundsException.class)
public void testIndexOutOfBoundsException() {
ArrayList emptyList = new ArrayList();
Object o = emptyList.get(0);
}
برتری راه اول نسبت به راه دوم آن است که در راه اول، انتظار بروز خطا در محلی بعد از یک LINE خاص قابل تعریف است. حال آنکه در روش دوم، انتظار بروز خطای مورد نظر در همه جای آن متد قابل تعریف است. یعنی نمی توان طوری تعریف کرد که بروز خطای مذکور در بخشی از بدنه متد باعث FAIL شدن تست بشود و در بخش دیگر باعث FAIL شدن تست نشود.