spring boot에서 spring data jpa에 대한 통합 테스트를 하는 경우 설정

2015-12-08 17:50

spring boot가 설정을 자동화한다는 점에서 유용한 점이 있다. 하지만 설정이 너무 자동화하다보니 내가 원하는 설정만 찾아 실행하는 것이 또 하나의 추가 작업이 된다.

spring data jpa를 기반으로 개발하는 경우 굳이 Repository를 테스트하지 않아도 된다. 하지만 jpa를 처음 적용하는 개발자, 복잡한 매핑을 진행한 경우 결과 확인과 같이 Repository를 테스트할 필요성은 있다. 특히 jpa를 처음 적용하는 개발자는 Repository에 대한 테스트를 진행해 자신이 원하는 결과를 확인하는 작업은 무엇보다 중요하다.

이와 같이 spring boot에서 spring data jpa 기반으로 개발을 진행하는 경우 Repository 빈만 생성한 후 테스트하고 싶을 경우 다음과 같이 설정한 후 테스트할 수 있다.

다음 코드는 scala 코드인데 java에서도 같은 방식을 적용할 수 있다.

import org.springframework.boot.autoconfigure.EnableAutoConfiguration
import org.springframework.boot.orm.jpa.EntityScan
import org.springframework.context.annotation.Configuration
import org.springframework.data.jpa.repository.config.EnableJpaRepositories
import org.springframework.transaction.annotation.EnableTransactionManagement

@Configuration
@EnableAutoConfiguration
@EntityScan(basePackages = Array("slipp.domain"))
@EnableJpaRepositories(basePackages = Array("slipp.domain"))
@EnableTransactionManagement
class RepositoryConfiguration

위와 같이 Spring 설정을 추가한 후 다음과 같이 사용하면 된다.

@RunWith(classOf[SpringJUnit4ClassRunner])
@SpringApplicationConfiguration(classes = Array(classOf[RepositoryConfiguration]))
@Transactional
abstract class IntegrationTest {
  @PersistenceContext val context: EntityManager = null

  def flush() {
    context.flush
  }

  def clear() {
    context.clear
  }

  def flushAndClear() {
    flush()
    clear()
  }
}

위와 같이 base 클래스를 만든 후 테스트를 진행한다.

0개의 의견 from SLiPP

의견 추가하기