728x90
1. ItemRepository 생성
- hello.example.repository.ItemRepository.java 생성
- OCP와 DIP를 지키기 위해 ItemRepository를 Interface로 생성
2. 테스트 전용 환경을 위한 application-test.properties 생성
- H2 DB를 시스템의 메인 메모리에서(JVM 위에서) 구동시키는 방식으로 가볍고 빠르다는 장점이 있다.
3. ItemRepositoryImpl 생성
- hello.example.repository.ItemRepositoryImpl.java 생성
- ItemRepository를 구현한다.
- EntityManager를 생성자 주입받기 위해 제어자인 final과 Lombok의 @RequiredArgsConstructor 애노테이션 사용
3.1 @RequiredArgsConstructor로 생성자 주입받는 법
- 말 그대로 Argument가 Required(필수) 여야 하기 때문에 EntityManager필드에 final을 붙여서 변수 값이 null일 수 없게 한다.
- Class에 @RequiredArgsConstructor 어노테이션을 붙이면 Spring프레임워크가 EntityManager를 DI(의존성 주입)해준다.
- EntityManager뿐 아니라 위와 같은 방법으로 다른 의존성들도 주입받을 수 있다.
4.ItemRepositoryTest 생성
- Test의 hello.example.ItemRepositoryTest.java 생성
- @SpringBootTest = SpringBoot를 이용한 통합 테스트를 위한 어노테이션
- 테스트 폴더에 설정한 위 2번의 application-test.properties의 설정이 우선권을 가진다.(H2데이터베이가 실행된다)
- @Autowird로 ItemRepository 인터페이스를 주입받는다.(구현체는 ItemRepositoryImpl)
- @DisplayName(테스트 이름을 결과창에 보여준다)
4.1 ItemRepositoryTest 성공
728x90