我有一个申请,我正在使用春季批次.我想编写一个可以端到端测试批处理作业的测试用例.我一直在探索相同的各种选择.我检查了一致性测试案例是否有用,但我不确定它是否是测试弹簧批作业的理想方法.到目前为止,我认为集成测试用例应该适合我的情况.我想知道测试我的场景应该是什么样的理想方法.
...
我们有如上定义的批处理作业,有20多个步骤,包括与外部系统的接口(> 5个这样的步骤),有步读者等.
在开发集成测试用例时,我正在考虑使用spring-batch-test API和Mockito,以便我可以模拟涉及外部系统调用的步骤.使用这种方法,我将不得不在弹簧配置本身(Injecting Mockito mocks into a Spring bean)中创建模拟对象.我不确定的是,如果我使用spring配置它们,我将如何模拟方法调用模拟bean.
我不确定我是否可以清楚地解释我的情景.如果您对弹簧批处理作业的E2E流程测试有任何其他更好的意见,请提供建议,如果您能对上述方法有任何明确的建议,请提供帮助.
最佳答案 你的方法似乎对我有用.我已多次使用类似的设置.只需从测试中设置Spring上下文,然后使用JobLauncherTestUtils来处理您的工作.
要考虑的一件事是嘲笑.如果多个连续步骤从同一数据源读取和写入相同的数据,那么模拟这些数据可能会导致测试中的大量模拟配置.也许为这些步骤设置内存数据库会更容易.这取决于您的实施细节.
关于你的嘲笑的设置……
您可以简单地将您的模拟自动装配到测试中.
@Autowired
private Dao mockedDao;
然后你可以像任何模拟一样简单地配置模拟.
when(dao.findById(any())).thenReturn(something);