728x90
반응형
목차는 테스트 & 리팩토링 목차 에 있습니다.
[테스트 및 리팩토링 9편] Junit5 정리
추후 찾아보기 위해 정리했습니다. 내용을 보강할 예정입니다.
ExtendWith
- Junit5 의 라이프사이클 중 Test 에서 사용할 기능을 확장하는 것입니다.
ExtendWith (SpringExtension.class)
spring TestContext + Junit5 통합하여 사용합니다.
인터페이스 : BeforeAllCallback, AfterAllCallback, TestInstancePostProcessor, BeforeEachCallback, AfterEachCallback, BeforeTestExecutionCallback, AfterTestExecutionCallback, ParameterResolver
ExtendWith (MockitoExtension.class)
Mockito 관련된 클래스 사용합니다.
인터페이스 : BeforeEachCallback, AfterEachCallback, ParameterResolver
InjectMocks
@Mock
이 붙은 클래스를 주입 해줍니다.아래 소스를 예를 들어 설명하면, TestService 에 InjectMocks 가 설정돼있으며, TestService 내의 Mock 대상에 객체를 주입해주는 역할을 합니다.
public class TestServiceTest {
@InjectMocks
private TestService testService;
@Mock
private TestRepository testRepository;
}
@Service
@RequiredArgsConstructor
public class TestService {
private final TestRepository testRepository;
}
Mock
- 가짜 객체를 뜻하며, Mock 으로 선언된 객체는 스터빙을 (when, return 등) 해줘야 합니다.
단위 테스트 예시
- 아래 소스 예시를 보면 TestService 에서 testRepository 를 사용하며, testRepository 에 mocking 을 해서 testService 를 단위테스트 하는 예제입니다.
@ExtendWith (MockitoExtension.class)
public class TestServiceTest {
@InjectMocks
private TestService testService;
@Mock
private TestRepository testRepository;
@Test
void testFindRepository() {
testRepository.save(TestEntity.builder.name("test").build());
List<TestDto> list = testService.getTestList();
Assertions.assertEquals(1, list.size());
}
}
'test & refactoring' 카테고리의 다른 글
[테스트 및 리팩토링 8편] fixture-monkey 정리 (0) | 2023.05.05 |
---|---|
[테스트 및 리팩토링 7편] TestContainer Example (0) | 2023.04.22 |
[테스트 & 리팩토링 6편] 팩토리 패턴 if else 줄이기 (map, functional interface 사용) (2) | 2022.08.01 |
[테스트 & 리팩토링 4편] github pull request template 및 CodeReview 정리 (0) | 2022.06.27 |
[테스트 & 리팩토링 3편] package layer, package import 정리 (0) | 2022.06.27 |
댓글