[ERROR] @DataJpaTest @CreatedDate, @LastModifiedDate not work null

반응형

1. 문제

@DataJpaTest로 Repository를 테스트 할때, @CreatedDate, @LastModifedDate가 null로 저장된다.

BaseTimeEntity

@Getter
@MappedSuperclass
@EntityListeners(AuditingEntityListener.class)
public class BaseTimeEntity implements Serializable {

    @CreatedDate
    @DateTimeFormat(pattern = "yyyy-MM-dd'T'HH:mm:ss")
    private LocalDateTime createdDate;


    @LastModifiedDate
    @DateTimeFormat(pattern = "yyyy-MM-dd'T'HH:mm:ss")
    private LocalDateTime modifiedDate;

}

반면, @SpringBootTest에서는 잘 작동한다.

2. 원인

@DataJpaTest는 @EnableJpaAuditing을 Auto-Configuring 해주지 않는다. 따라서 @CreatedDate와 @LastModifedDate를 사용할 수 없다.

3. 해결

@EnableJpaAuditing을 선언한 Class를 @DataJpaTest의 includeFilters에 추가한다.

RepositoryTest

@RunWith(SpringRunner.class)
@DataJpaTest(includeFilters = @ComponentScan.Filter(
        type = FilterType.ASSIGNABLE_TYPE,
        classes = JpaConfig.class
))
public class MissionRepositoryTest {

...
}

나의 경우에는 JpaConfig.class에 아래와 같이 @EnableJpaAuditing을 선언했다.

JpaConfig

@Configuration
@EnableJpaAuditing
public class JpaConfig {

...
}

추천서적

 

스프링 부트와 AWS로 혼자 구현하는 웹 서비스

COUPANG

www.coupang.com

파트너스 활동을 통해 일정액의 수수료를 제공받을 수 있음


반응형

댓글

Designed by JB FACTORY