JAVA

[TEST] 날짜 자동 생성 테스트

응디 2022. 3. 3. 17:29

test code 작성 중 문제 발생

 

[문제]

createdDate 자동 생성 테스트 코드 작성 중 문제가 발생

→ 테스트를 위해 우선 데이터를 삽입 후 날짜를 비교해야 하는데 날짜가 null로 삽입됨

 

[해결]

BaseTimeEntity에 @EntityListeners(AuditingEntityListener.class) 을 이용해 JPA 청취 기능을 하는데 main함수가 있는 클래스에서 JPA 청취 가능을 시켜주지 않으면 사용이 불가하다.

따라서 기능 구현을 할 클래스에 @EnableJpaAuditing 어노테이션을 붙여주면 생성됨

 

package movie.finder.Repository;

import movie.finder.domain.Movie;
import movie.finder.repository.MovieRepository;
import org.junit.After;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.data.jpa.repository.config.EnableJpaAuditing;
import org.springframework.test.context.junit4.SpringRunner;
import org.springframework.transaction.annotation.Transactional;

import static org.assertj.core.api.Assertions.assertThat;
import static org.assertj.core.api.Assertions.setMaxElementsForPrinting;

import java.time.LocalDateTime;
import java.util.List;

@EnableJpaAuditing
@RunWith(SpringRunner.class)
@SpringBootTest
public class MovieRepositoryTest {
    @Autowired
    MovieRepository movieRepository;

    @Test
    public void BaseTimeEntity_insert(){
        LocalDateTime now = LocalDateTime.of(2022,03,01,0,0,0);
        Movie movie = movieRepository.save(Movie.builder()
                .title("HarryPotter")
                .summary("HarryPotter story")
                .actor("Daniel, Emma")
                .build());

        Movie findMovie = movieRepository.findById(movie.getId());

        assertThat(movie.getCreatedDate()).isAfter(now);
    }

}

'JAVA' 카테고리의 다른 글

[TEST] 예외 발생 테스트  (0) 2022.03.08
[JAVA] Q-Type  (0) 2022.03.07
[JAVA] Querydsl 설정  (0) 2022.03.03
[JAVA] web 확장 - 페이징과 정렬  (0) 2022.03.03
[JAVA] Auditing  (0) 2022.02.24