데이터베이스와의 몇 가지 간단한 작업을 포함하는 단위 테스트가 있습니다. 데이터베이스와의 상호 작용은 Spring Data 및 JPA로 구현됩니다. 내 환경은 Spring Boot 1.4
입니다.Unit/Integration 테스트에서 스프링 부트 데이터/JPA 레이어 만 데이터베이스와로드
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(initializers = ConfigFileApplicationContextInitializer.class)
@SpringBootTest(classes = {Application.class})
@Transactional
public class OrderRepositoryTest {
@Autowired
private OrderRepository orderRepository;
@Autowired
EntityManager entityManager;
@Test
public void can_create_and_find_one_order() {
String orderId = "XX_YY";
Order order1 = createAnOrder();
orderRepository.save(order1);
entityManager.flush();
entityManager.clear();
Order order2 = orderRepository.findOne(orderId);
Assertions.assertThat(order2).isEqualTo(order1);
}
}
:
@EnableAutoConfiguration
@EnableConfigurationProperties
@ComponentScan(basePackageClasses = {
WebMvcConfig.class,
ServicesConfiguration.class,
WebSecurityConfiguration.class
})
public class Application extends SpringBootServletInitializer {
@Override
protected SpringApplicationBuilder configure(SpringApplicationBuilder applicationBuilder) {
return applicationBuilder.sources(Application .class);
}
public static void main(String[] args) {
SpringApplication.run(Application.class, args);
}
}
JPA에 층을로드 않습니다 테스트를
내 시험은 아래와 같다 작업을 수행합니다. 또한 MVC 구성, 보안 구성 및 테스트하지 않는 다른 많은 계층도로드합니다.
질문 : EnableAutoConfiguration
을 어떻게 바꾸고 필요한 JPA 레이어 만로드 할 수 있습니까?
@Configuration
@EnableJpaRepositories(basePackages = "class.path.to.my.repositories")
public class PersistenceConfiguration {
// Whatever needs to be here
// ...
}
원래 포스터가 트랜잭션 테스트를 원했기 때문에'(propagation = Propagation.NOT_SUPPORTED)'을 삭제하고 테스트 클래스의 이름을 변경해야합니다. 그렇지 않으면 대답이 좋아 보인다. –
@SamBrannen 예, 알림을 보내 주셔서 감사합니다. –
수정없이이 코드를 사용하면'@SpringBootConfiguration을 찾을 수 없다는 오류가 발생합니다. @ContextConfiguration 또는 @SpringBootTest (클래스 = ...)를 테스트와 함께 사용해야합니다' – jmgonet