【发布时间】:2017-08-17 07:32:11
【问题描述】:
我正在寻找有关为 Spring Cloud Task 编写集成(即测试整个 Spring Boot 应用程序)的最佳方式的一些指导。 根据现有的文档和示例,我看到了两种方法:
1) 使用标准的 @SpringBootTest 和 @TestPropertySource(properties = {"spring.cloud.task.closecontext_enable=false"} 如此处所述
http://docs.spring.io/spring-cloud-task/docs/1.2.0.M2/reference/htmlsingle/#_writing_your_test
这似乎实际上只允许每个测试类进行一次测试,因为在初始化弹簧上下文时运行任务,即每个测试类一次。然而 @将上下文中的bean自动装配到测试类中应该可以检查任务的结果,或者检查任务存储库的状态。
2) 使用 SpringApplication.run(MyTaskApplication.class, myArguments);在此处的示例中的每个测试方法中
这允许我在测试类中编写多个测试,每个测试都有可能不同的弹簧属性或批处理作业参数。
我在使用这两种方法时遇到的主要问题是,我看不到如何在 JdbcTemplate(例如,将作业的测试输入数据插入嵌入式数据库)或 RestTemplate(使用 MockRestServiceServer 设置期望) 在创建这些 bean 之后但在任务运行之前 - 这可能吗?如果不是,那么很难看出如何为任务编写有意义的集成测试。
【问题讨论】: