-
Notifications
You must be signed in to change notification settings - Fork 0
Open
Labels
TDDAbout Test-Driven DevelopmentAbout Test-Driven Development
Description
이슈
단위테스트를 진행하면서 단위테스트를 어디까지 진행해야하는지에 대한 의문이 생겼다.
Service단의 단위테스트를 진행할 때 예외 처리 단위 테스트 또한 진행하는데 만약 다음과 같은 코드가 있다면 해당 코드를 단위 테스트를 해주는 것이 과연 효과적인 걸까?
다음은 Service 단의 코드이고
public List<...> getSth(String userId) throws BaseException {
Users user = usersRepository.findById(userId)
.orElseThrow(() -> new BaseException(BaseResponseStatus.EMPTY_BY_USER_ID));
...아래는 해당 메서드의 예외 테스트 코드이다.
@Test
@DisplayName("Invalid User Id 테스트")
void invalid_userId_test() {
// given
given(fakeUsersRepository.findById(any())).willReturn(Optional.empty());
// when
String userId = "admin";
// then
assertThatThrownBy(() -> smtService.getSth(userId))
.isInstanceOf(BaseException.class);
}여기서의 테스트는 UsersRepository에서 Optional.empty()가 나왔을 때 getSth() 메서드 안에 있는 orElseThrow()가 정상작동 하는지를 보는 테스트라고 생각한다.
그렇다면 해당 테스트는 개발자의 손을 벗어난 라이브러리 단의 기능이 정상 작동하는지 테스트하고 있는게 아닐까? 즉 테스트 할 필요가 없는 부분 아닐까?
문제는 일단 개발자가 어디까지 테스트를 해야하는지에 대한 개념이 잡혀있지 않다.
이 개념이 테스트 코드를 작성하는데 가장 중요한데 방법적인 부분만 알고 핵심을 모르고 있다는 생각이 든다.
테스트 코드의 '목적'에 대한 공부가 필요하다.
공부해볼 내용
- 테스트 코드를 실행해야 하는 범위
- 좋은 테스트 코드란 무엇인가?
- Clean Code 책을 봐보자
Reactions are currently unavailable
Metadata
Metadata
Assignees
Labels
TDDAbout Test-Driven DevelopmentAbout Test-Driven Development