카테고리 없음
[자바] 예외 처리 코드를 테스트하기위한 테스트 코드를 어떻게 작성합니까?
필살기쓰세요
2021. 2. 10. 09:17
이에 접근하는 한 가지 방법 :
- 해당 예외를 처리 하는 책임은 자체 클래스에 있습니다.
- 그런 다음 종속성 주입 을 사용하여 새 클래스의 객체를 클래스 A에 제공 합니다.
- 이제 당신은 전달과 같은 EasyMock에 또는 Mokito으로 조롱 프레임 워크를 사용 할 수 있습니다 조롱 A.으로 그 예외 핸들러 클래스의 인스턴스를
- 마지막으로 모의 객체가 예상 호출을 보는지 확인합니다.
이러한 접근 방식은 표면적으로는 "더 많은 작업"처럼 보일 수 있지만 우려 사항을 분리 할 때 더 나은 설계로 이어질 수 있습니다. 그리고 특별한 예외 처리기 클래스를 만들어서 그 클래스를 자체적으로 테스트 할 수도 있습니다!
-------------------나는 notifyJDBCConnection
그것이 이메일 발신자이든 아니든 일종의 알림 프레임 워크를 호출 할 것이라고 생각합니다. Mockito 와 같은 프레임 워크를 사용하여 해당 구성 요소를 모의하면 해당 구성 요소 에 대한 적절한 호출이 수행되었는지 확인할 수 있습니다.
GhostCat에서 제안한 디자인으로 Mockito 및 JUnit을 사용하는 솔루션 :
class A {
private final JDBCConnectionNotifier notifier;
public A(JDBCConnectionNotifier notifier){
this.notifier = notifier;
}
public void doSomething()throws DBException {
try{
//some code that might throw JDBCConnectionException
}catch(JDBCConnectionException e){
notifier.notifyJDBCConnection()
}catch(Exception e){
}
}
}
따라서 테스트 클래스는 다음과 같습니다.
import static org.mockito.Mockito.*;
import org.junit.*;
class ATest {
@Test
public void shouldCallNotifierOnJDBCConnectionException() throws Exception {
JDBCConnectionNotifier notifier = mock(JDBCConnectionNotifier.class);
A a = new A(notifier);
a.doSomething();
verify(notifier).notifyJDBCConnection();
}
}
출처
https://stackoverflow.com/questions/39930067