티스토리 뷰

개발

spring @DataJpaTest를 이용한 TestCase

달리는개발자 2018. 8. 7. 16:52

JPA 애플리케이션을 테스트 하기 위해서 @DataJpaTest를 사용할 수 있습니다.

@Component 빈들은 ApplicationContext에 로그되지 않고 @Entity, JPA repositories만 구성됩니다.


UserRepositoryTest

@RunWith(SpringRunner.class)
@DataJpaTest
@TestPropertySource(locations = "classpath:application.properties")
public class UserRepositoryTest {

@Autowired
private UserRepository userRepository;

@Test
public void findByUsername() {
String username = "papa";
User user = this.userRepository.findByUsername(username);
assertNotNull(user);
assertEquals(user.getUsername(), username);
}
}


application.properties

spring.datasource.url=jdbc:h2:mem:myDb;DB_CLOSE_DELAY=-1
spring.jpa.properties.hibernate.dialect=org.hibernate.dialect.H2Dialect
spring.jpa.properties.hibernate.hbm2ddl.auto=create


기본적으로 In-memory embedded database이어서 실제 database를 사용하고 싶다면 다음과 같이 설정한다.

@RunWith(SpringRunner.class)
@DataJpaTest
@TestPropertySource(locations = "classpath:application.properties")
@AutoConfigureTestDatabase(replace= AutoConfigureTestDatabase.Replace.NONE)
public class UserRepositoryTest {


테이블 스키마는 schema.sql에 넣고 초기 데이터는 data.sql에 입력합니다.

spring.datasource.platform 설정을 통해 hsqldb, h2, oracle, mysql, postgresql 등 여러 database 를 설정할 수 있습니다.


schema-${platform}.sql, data-${platform}.sql 형식을 지원합니다.

ex) schema-h2.sql, data-h2.sql, schema-mysql.sql, data-mysql.sql


참고

https://docs.spring.io/spring-boot/docs/current/reference/html/boot-features-testing.html#boot-features-testing-spring-boot-applications-testing-autoconfigured-jpa-test

https://docs.spring.io/spring-boot/docs/current/reference/html/howto-database-initialization.html


반응형
댓글
반응형
공지사항
최근에 올라온 글
최근에 달린 댓글
Total
Today
Yesterday
«   2025/01   »
1 2 3 4
5 6 7 8 9 10 11
12 13 14 15 16 17 18
19 20 21 22 23 24 25
26 27 28 29 30 31
글 보관함