【问题标题】:Spring Boot Exclude DataSource ConfigurationSpring Boot 排除数据源配置
【发布时间】:2017-05-30 11:34:13
【问题描述】:

我有一个小型应用程序,它在运行时会建立数据库连接,并存储和持久化一些数据。

我目前正在尝试编写一些测试,我想完全切断应用程序的数据库部分,并在测试中模拟它。

数据源是使用配置类设置的。

@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,并连接到数据库,我假设是因为我的配置类。我怎样才能阻止 Spring 这样做?

【问题讨论】:

    标签: java spring hibernate spring-mvc testing


    【解决方案1】:

    无需使用:@EnableAutoConfiguration

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

    @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 或使用完整的应用程序上下文加载来测试 Spring 应用程序:https://spring.io/guides/gs/testing-web/

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

    【讨论】:

      猜你喜欢
      • 2016-01-17
      • 2015-01-26
      • 2021-03-16
      • 2018-03-22
      • 1970-01-01
      • 2018-06-14
      • 2019-09-09
      相关资源
      最近更新 更多