ExpectedException 규칙을 사용하려면 테스트 클래스에 ExpectedException 인스턴스를 public으로 선언하고 @Rule 애너테이션을 부착해야 합니다(다음 클래스의 04행).
iloveyouboss_13/test/scratch/AssertTest.java
01 import org.junit.rules.*; 02 // ... 03 @Rule 04 public ExpectedException thrown = ExpectedException.none(); 05 06 @Test 07 public void exceptionRule() { 08 thrown.expect(InsufficientFundsException.class); 09 thrown.expectMessage("balance only 0"); 10 11 account.withdraw(100); 12 }
테스트의 셋업 단계에서 나머지 테스트를 실행할 때 발생할 수 있는 일을 규칙에 알립니다. thrown 규칙 인스턴스는 InsufficientFundsException 예외가 발생함을 알려 줍니다(08행).
또 예외 객체에 적절한 메시지가 포함되어 있는지 검사하길 원하여 thrown 규칙에 다른 기대 사항을 지정했습니다(09행). 관심이 있다면 규칙 객체가 예외에 원인 객체도 포함되는 것을 기대하게 할 수 있습니다.