Spring Boot排除数据源配置

时间:2017-05-30 11:34:14

标签: java spring hibernate spring-mvc testing

我有一个小应用程序,在实时,建立数据库连接,并存储和保留一些数据。

我目前处于尝试编写测试的中间位置,我想完全切断应用程序的数据库部分,并在测试中模拟它。

使用配置类设置数据源。

@Component
@Configuration
public class DataSourceConfiguration {
    @Bean
    public DataSource myDataSource() { ... }
}

和目前看起来类似于

的测试boostrap
@RunWith(SpringRunner.class)
@EnableAutoConfiguration(exclude = {
    DataSourceAutoConfiguration.class,
    DataSourceTransactionManagerAutoConfiguration.class,
    HibernateJpaAutoConfiguration.class
})
public class MyTest {
}

运行测试时,我可以看到Spring正在尝试实例化Hibernate,以及与db的连接,我假设因为我的配置类。我怎么能阻止Spring这样做?

1 个答案:

答案 0 :(得分:0)

无需使用:@EnableAutoConfiguration

我们可以使用@WebMvcTest将测试范围缩小到网络层,如下所示

@RunWith(SpringRunner.class)
@WebMvcTest
public class WebLayerTest {

    @Autowired
    private MockMvc mockMvc;

    @Test
    public void shouldReturnDefaultMessage() throws Exception {
    this.mockMvc.perform(get("/")).andDo(print()).andExpect(status().isOk())
            .andExpect(content().string(containsString("Hello World")));
    }
}

参考如何仅使用web或使用完整的应用程序上下文加载来测试弹簧应用程序:https://spring.io/guides/gs/testing-web/

参考模拟示例:http://www.lucassaldanha.com/unit-and-integration-tests-in-spring-boot/