JUnit을 사용하여 레포지토리 테스트 코드를 작성하려면, 몇 가지 사전 준비 작업이 필요합니다. 예를 들어, 데이터베이스 접근이 필요한 경우 인메모리 데이터베이스인 H2를 사용하거나, 테스트 환경을 구성하여 Spring Data JPA 레포지토리를 테스트할 수 있습니다. 기본적인 예제로 Spring Data JPA를 사용하는 경우의 테스트 코드를 작성해드릴게요.
아래의 코드는 간단한 엔터티와 해당 레포지토리를 테스트하는 방법을 보여줍니다.
ExampleEntity.java
import javax.persistence.Entity;
import javax.persistence.GeneratedValue;
import javax.persistence.GenerationType;
import javax.persistence.Id;
@Entity
public class ExampleEntity {
@Id
@GeneratedValue(strategy = GenerationType.IDENTITY)
private Long id;
private String name;
// Getters and Setters
public Long getId() {
return id;
}
public void setId(Long id) {
this.id = id;
}
public String getName() {
return name;
}
public void setName(String name) {
this.name = name;
}
}
ExampleRepository.java
import org.springframework.data.jpa.repository.JpaRepository;
public interface ExampleRepository extends JpaRepository<ExampleEntity, Long> {
// 사용자 정의 쿼리 메서드를 여기에 추가할 수 있습니다.
}
ExampleRepositoryTest.java
import org.junit.jupiter.api.Test;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.autoconfigure.orm.jpa.DataJpaTest;
import java.util.Optional;
import static org.assertj.core.api.Assertions.assertThat;
@DataJpaTest
public class ExampleRepositoryTest {
@Autowired
private ExampleRepository exampleRepository;
@Test
public void testSaveAndFindById() {
// 엔터티 생성 및 저장
ExampleEntity entity = new ExampleEntity();
entity.setName("Test Entity");
ExampleEntity savedEntity = exampleRepository.save(entity);
// 저장된 엔터티를 ID로 검색
Optional<ExampleEntity> foundEntity = exampleRepository.findById(savedEntity.getId());
// 엔터티가 제대로 저장되었는지 검증
assertThat(foundEntity).isPresent();
assertThat(foundEntity.get().getName()).isEqualTo("Test Entity");
}
}
위 코드에서 @DataJpaTest
어노테이션을 사용하면 Spring Data JPA 관련 설정만 로드되어 JPA 기능을 테스트할 수 있습니다. assertThat
은 assertj
라이브러리의 메서드로, 테스트 결과를 쉽게 확인할 수 있게 도와줍니다.
이 코드로 기본적인 Spring Data JPA 레포지토리 테스트 방법을 알 수 있습니다. 필요한 경우 테스트 환경에서 여러 조건을 추가하거나 복잡한 쿼리 메서드를 테스트할 수 있습니다.