我有一个 ApplicationRunner bean,它执行一些飞路迁移。
@Bean
ApplicationRunner flywayRunner(){
return new ApplicationRunner() {
@Override
public void run(ApplicationArguments args) throws Exception {
Flyway flyway = Flyway.configure().dataSource("jdbc:postgresql://localhost:5432/dbname").load();
flyway.migrate();
}
};
}
我还没有编写任何测试用例,但一些已经存在的集成测试用例由于无法使用 bean ApplicationRunner 加载 ApplicationContext 而失败。
我是 spring 的新手,所以不确定如何使现有的测试用例通过。
最佳答案
在集成测试类中使用@SpringBootTest
注释为您的测试用例创建或启动应用程序上下文。对于覆盖从传入请求到数据库的整个Spring Boot应用程序的测试,或测试覆盖应用程序中难以手动设置的某些部分,我们可以而且应该使用@SpringBootTest。我们可以使用 @AutoConfigureMockMvc 这样的注释来自定义加载到应用程序上下文中的配置和模拟 bean。您甚至可以提供自己的自定义主应用程序类来运行集成测试用例,并使用它来加载您自己的测试配置:
@SpringBootTest(classes = CustomApplication.class)
class CustomApplicationTest {
}
如果您只想添加一个 Bean,您还可以使用 @Import
注释来导入所需的 Bean。
关于java - 我如何模拟 ApplicationRunner bean,以便 ApplicationContext 加载这个模拟的 ApplicationRunner Bean,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62442868/