비즈니스 로직 구현상의 편의와 하위 호환성을 위해 아무것도 하지 않는 메서드를 호출하게 되는 경우가 있다.
public abstract class Beer {
private String name;
private LocalDateTime expirationDate;
abstract void addAlcohol(int amount);
}
주류회사의 서비스이고, Beer 클래스의 구현체가 굉장히 많다고 가정하자.
비즈니스 로직에는 반드시 addAlcohol()을 호출하고 있다.
public class Coffee extends Beer {
@Override
void addAlcohol(int amount) {
// do nothing
}
}
그런데 갑자기 커피를 만들어 팔려고 한다면...?
커피는 알코올이 들어가지 않으니깐 메서드를 오버라이드하고 빈 상태가 된다.
이렇게 하면 기존 코드에서 분기문이 나오거나, 혹은 유효성 체크를 할 필요가 없어진다.
Mockito.doNothing()
@Test
void addAlcohol() {
Coffee coffee = Mockito.mock(Coffee.class);
Mockito.doNothing().when(coffee).addAlcohol(0);
}
Mockito의 메서드인 doNothing()을 사용해 테스트 코드의 의도를 표현할 수 있다.
빈 메서드에 대한 테스트 코드를 작성해야 하는지는 의문이다.
작성하지 않으면 커버리지에 반영되지 않지만 의미가 있는지는 잘...
'Programming' 카테고리의 다른 글
N*N, N**2, pow(N, 2), math.pow(N,2) (0) | 2021.08.06 |
---|---|
[2021 ver.] 서버 개발자 mac 장비 설정 (0) | 2021.08.02 |
Class.isAssignableFrom (0) | 2021.07.20 |
Chapter9. 디플로이먼트: 선언적 애플리케이션 업데이트 (0) | 2021.07.19 |
@cache (0) | 2021.06.28 |