inblog logo
|
LHS's Study Space
    스프링부트

    [스프링 부트] 11. Repository 구현 및 테스트

    lhs's avatar
    lhs
    Nov 17, 2024
    [스프링 부트] 11. Repository 구현 및 테스트
    Contents
    1. BoardRepository2. BoardRepositoryTest
     

    1. BoardRepository

    @RequiredArgsConstructor @Repository public class BoardRepository { private final EntityManager entityManager; public List<Board> findAll() { Query query = entityManager.createNativeQuery("select * from board_tb order by id desc", Board.class); return query.getResultList(); } }
    • entityManager.createNativeQuery : 네이티브 SQL 쿼리를 생성하는 메서드
      • 네이티브 SQL은 데이터베이스에 직접 작성된 SQL 문을 실행하며, 복잡한 쿼리나 성능 최적화가 필요한 경우에 주로 사용된다.
    • Board.class : 쿼리의 결과를 Board 엔터티 객체로 매핑
    • query.getResultList() : 쿼리의 결과를 List<Board> 형식으로 반환하는 메서드

    2. BoardRepositoryTest

    notion image
    • 찾기 쉽게 하기 위해 BoardRepository와 같은 패키지에 BoardRepositoryTest.java를 생성한다.
    • 테스트할 클래스명 뒤에 Test를 붙이는 컨벤션을 따른다.
    @Import(BoardRepository.class) @DataJpaTest public class BoardRepositoryTest { @Autowired private BoardRepository boardRepository; @Test public void findAll_test() { // given parameter 입력할 매개변수 // findAll에 매개변수가 없어서 생략 // when method 테스트할 메서드 List<Board> boardList = boardRepository.findAll(); // then verify 검증 // eye로 대체 // eye 직접 확인 for (Board board : boardList) { System.out.println(board.getId()); System.out.println(board.getTitle()); System.out.println(board.getContent()); System.out.println(board.getCreatedAt()); System.out.println("============"); } } }
    • @Import(BoardRepository.class) : BoardRepository 클래스를 테스트 컨텍스트(IOC)에 가져오는 어노테이션
    • @DataJpaTest : JPA 관련 컴포넌트를 테스트할 때 DB관련 자원들을 메모리에 올리는 어노테이션
    • @Autowired : BoardRepository의 Bean 객체를 자동으로 주입하는 어노테이션
    • @Test : 테스트 메서드로 지정하는 어노테이션
      • main 메서드를 실행하지 않고 단독으로 실행할 수 있게 해준다.
    • findAll_test : findAll 메서드를 테스트하기 위한 테스트 메서드
      • 테스트 메서드는 _test를 붙이는 컨벤션을 따른다.
    • 테스트의 3가지 단계
      • given : 테스트를 위한 입력 값을 설정하는 단계
        • findAll() 메서드에서는 입력할 매개변수가 없어서 생략된다.
      • when : 테스트할 메서드를 실행하는 단계
        • findAll() 메서드를 실행하여 boardList에 결과를 저장한다.
      • then : 결과를 검증하는 단계
        • 출력으로 결과를 검증하는 방식으로 대체하였다.
     
    Share article
    Contents
    1. BoardRepository2. BoardRepositoryTest

    LHS's Study Space

    RSS·Powered by Inblog