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
의견을 남기기 위해서는 SLiPP 계정이 필요합니다.
안심하세요! 회원가입/로그인 후에도 작성하시던 내용은 안전하게 보존됩니다.
SLiPP 계정으로 로그인하세요.
또는, SNS 계정으로 로그인하세요.