JUnit 5 테스트

용씨·2023년 2월 23일
0

Nota 프로젝트

목록 보기
7/7

DB에 데이터를 저장하는 로직을 짜는 중인데 매번 수동으로 테스트하는 것이 힘들어서 테스트코드를 작성해보려고 한다.

JUnit 5 테스트

개요

JUnit은 Java 생태계에서 가장 널리 사용되는 단위 테스트 프레임워크 중 하나입니다. JUnit5는 Java 8 이상의 새로운 기능을 지원합니다.

JUnit 5 = JUnit Platform + JUnit Jupiter + JUnit Vintage

  • Junit Platform
    JVM 위에서 테스트 프레임워크를 시작하기 위한 기반을 제공한다. 플랫폼에서 실행되는 테스트 프레임워크를 개발하기 위한 TestEngine API를 정의한다.
    IDEs(IntelliJ, Eclipse, Visual Studio Code)와 build tools(Gradle, Maven)에도 존재한다.
  • JUnit Jupiter
    JUnit 5에서 테스트 및 확장을 작성하기 위한 프로그래밍 모델과 확장 모델의 조합이다. Jupiter 하위 프로젝트는 플랫폼에서 Jupiter 기반 테스트를 실행하기 위한 TestEngine을 제공한다.
  • JUnit Vintage
    플랫폼에서 JUnit 3 및 JUnit 4 기반 테스트를 실행하기 위한 Test Engine을 제공한다.

단위 테스트 Repository Layer

  • DAO 계층을 단위 테스트하려면 먼저 메모리 내 테스트 데이터베이스가 필요합니다. 이는 @AutoConfigureTestDatabase를 사용하여 달성할 수 있습니다.
  • auto-configuration을 비활성하고, 대신 JPA 테스트와 관련된 구성만 적용하는 @DataJpaTest를 사용합니다.
    • MySQL 등의 외부 DB를 사용하기 위해서는 (replace = Replace.NONE) 속성을 주어야 합니다.
    • 테스트 종료 후 롤백도 같이 수행합니다
@ExtendWith(SpringExtend.class)
@DataJpaTest 
@AutoConfigureTestDatabase(replace = Replace.NONE)
class UserRepositoryTest {

    @Autowired
    UserRepository userRepository;

    @Test
    void save() {
        // given
        String userId = "ADMIN";
        UserEntity user = UserEntity.builder().userId(userId).build();

        // when
        final UserEntity saveUser = userRepository.save(user);

        // then
        assertEquals(userId, saveUser.getUserId());
    }
}

https://howtodoinjava.com/spring-boot2/testing/spring-boot-2-junit-5/

profile
아침형 인간이 목표

0개의 댓글