티스토리 뷰

Spring Boot

[Spring boot] JPA test

하악생 2023. 1. 10. 00:20

SpringBootTest 어노테이션을 통해서 EntityManager를 Autowired하고 데이터를 조회하는 방법도 있지만, 

모든 Beans를 스캔하는 방식을 사용하고 있기 때문에 프로젝트가 무거워질수록 테스트 시간이 오래 걸릴 수 있다. 

원하는 부분에 대해서만 쿼리 테스트를 진행하고싶다면, DataJpaTest 어노테이션으로 데이터베이스 관련해서만 테스트해볼 수 있다.

하지만.. 원격 DB를 가리키는 경우 드라마틱한 수행시간 차이는 느낄 수가 없었다.

 

JUnit5 기준 JPA(+ QueryDSL)만 테스트하고 싶은 경우 다음 어노테이션을 추가한다. 

(JUnit4는 @RunWith(SpringRunner.class)까지 추가)

 

1. AutoConfigureTestDatabase(replace = AutoConfigureTestDatabase.Replace.NONE)

   -> NONE : 데이터베이스의 소스를 프로젝트 Active Profiles에 정의되어있는 데이터베이스로 가리키도록 하는 옵션 

2. DataJpaTest

   -> JPA 테스트 명시 

 

다음은 테스트용 풀 코드! TestEntity라는 Entity가 있다고 가정한다. 


@AutoConfigureTestDatabase(replace = AutoConfigureTestDatabase.Replace.NONE)
@DataJpaTest
public class JPATests {

    @Autowired
    private TestEntityManager testEntityManager;

    @Test
    @Rollback(value = false)
    public void testEntityCreator() throws Exception {
        EntityManager em = testEntityManager.getEntityManager();
        TestEntity testEntity = new TestEntity();
        testEntity.setValue1("test!");

        em.persist(testEntity);
    }
}
  • @Rollback(value = false) : 테스트 진행 시 롤백을 하지 않도록 (기본적으로는 모든 테스트 작업은 rollback이 진행되도록 되어있음)
반응형

'Spring Boot' 카테고리의 다른 글

[AWS] EB에 SpringBoot 올리기  (0) 2022.09.12
[Spring Boot] Cause: invalid source release: 11  (0) 2022.09.12
댓글
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
링크
«   2024/05   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함