You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
JUnit5 테스트를 사용하며 @ExtendWith(MockitoExtension.class) 어노테이션을 테스트 클래스에 선언 후 테스트를 작성.
given()을 통해 mocking 데이터를 생성 후 User를 생성하는 코드를 테스트 진행
아래와 같은 코드 작성 시
@DisplayName("사용자 비즈니스 테스트")
@Test
void testCase1() {
// given
RequestSaveUser saveUser =
RequestSaveUser.of("[email protected]", "seok", "1234");
User actual = RequestSaveUser.toEntity(saveUser);
// mocking 데이터 생성
given(userRepository.save(any())).willReturn(actual);
given(userRepository.findByEmail(any())).willReturn(Optional.of(actual));
// when
ResponseUser responseUser = userBusinessService.addUser(saveUser);
// then
assertThat(actual.getEmail()).isEqualTo(responseUser.getEmail());
}
Unnecessary stubbings detected.
Clean & maintainable test code requires zero unnecessary code.
Following stubbings are unnecessary (click to navigate to relevant line of code):
1. -> at com.example.realworld.application.users.service.UserBusinessServiceTest.testCase1(UserBusinessServiceTest.java:49)
Please remove unnecessary stubbings or use 'lenient' strictness. More info: javadoc for UnnecessaryStubbingException class.
org.mockito.exceptions.misusing.UnnecessaryStubbingException:
라는 에러를 발생 시킨다.
이유는 생성한 stub에 대한 테스트 실행 중에 실현되지 않은 stub이 존재하여 발생하는 오류이다.
@MockitoSettings(strictness = Strictness.LENIENT) 라는 어노테이션을 클래스에 설정하면 실행되지 않은 stub으로인한 에러를 없앨 수 있으나 이는 정확한 해결방법이 아니다.
MockitoHint 에 따르면 불필요한 stubing을 제거하는 것이 좋다고 나와 있다.
이유는 코드베이스를 깨끗하게 유지보수 가능하도록 만들려면 불필요한 코드를 제거해야 하기 때문이다.
결론은 stub에 대한 테스트 코드를 작성하는 것으로 수정하거나, 관련 불필요한 stub을 제거하는 것 중에 선택하면 된다는 것이다.
The text was updated successfully, but these errors were encountered:
JUnit5 테스트를 사용하며 @ExtendWith(MockitoExtension.class) 어노테이션을 테스트 클래스에 선언 후 테스트를 작성.
given()을 통해 mocking 데이터를 생성 후 User를 생성하는 코드를 테스트 진행
아래와 같은 코드 작성 시
라는 에러를 발생 시킨다.
이유는 생성한 stub에 대한 테스트 실행 중에 실현되지 않은 stub이 존재하여 발생하는 오류이다.
@MockitoSettings(strictness = Strictness.LENIENT)
라는 어노테이션을 클래스에 설정하면 실행되지 않은 stub으로인한 에러를 없앨 수 있으나 이는 정확한 해결방법이 아니다.이유는 코드베이스를 깨끗하게 유지보수 가능하도록 만들려면 불필요한 코드를 제거해야 하기 때문이다.
The text was updated successfully, but these errors were encountered: