반응형
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 {
...
}
추천서적
파트너스 활동을 통해 일정액의 수수료를 제공받을 수 있음
반응형