[JUnit] 예외를 기대하는 세가지 방법 :: (5)

ggyu_55·2023년 7월 23일
0

메모

목록 보기
26/46
post-thumbnail
post-custom-banner

1. 어노테이션 사용

@Test 어노테이션에서 인자로 기대한 예외를 지정할 수 있다.

@Test(expecter = InsufficientFundsException.class)
public void throwsWhenWithdrawingTooMuch() {
	account.withdraw(100;
}

위 예시 코드에서 InsufficientFundsException 이 발생하면 테스트가 통과하고, 그렇지 않으면 실패한다.


2. try/catch 블록

익숙한 맛

@Test
   public void throwsWhenWithdrawingTooMuchTry() {
      try {
         account.withdraw(100);
         fail();
      }
      catch (InsufficientFundsException expected) {
         assertThat(expected.getMessage(), equalTo("balance only 0"));
      }
   }

예외가 발생하면 제어권이 catch블록으로 넘어간다.


3. ExpectedException 규칙

ExpectedException 규칙을 사용하려면 테스트 클래스에 ExpectedException 인스턴스를 public으로 선언하고 @Rule 어노테이션을 부착하여야 한다.

@Rule
public ExpectedException thrown = ExpectedException.none();  

@Test
public void exceptionRule() {
   thrown.expect(InsufficientFundsException.class); 
   thrown.expectMessage("balance only 0");  
   
   account.withdraw(100);  
}

4. 예외를 무시하고 예외 처리의 책임을 던져버리기

@Test
   public void readsFromTestFile() throws IOException {
      String filename = "test.txt";
      BufferedWriter writer = new BufferedWriter(new FileWriter(filename));
      writer.write("test data");
      writer.close();
      // ...
   }

참고 :: 자바와 JUnit을 활용한 실용주의 단위 테스트

post-custom-banner

0개의 댓글