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