在JUnit测试用例中触发Spring批处理作业

时间:2014-05-18 14:01:18

标签: java spring junit spring-batch

背景:

我目前正在开发一个应用程序,它使用Spring Batch读取一组文件并将文件内容缓存在内存中。然后,业务逻辑层使用缓存的数据,该业务逻辑层被划分为不同的类,每个类通过使用来自缓存的数据来执行特定的业务功能。

要求

我被分配了对业务逻辑层进行单元测试的任务。由于业务逻辑层假定数据在缓存中可用,我需要一种方法在我测试业务逻辑类之前在单元测试中触发Spring批处理作业。

问题:

我正在考虑编写一个父JUnit类,它将由测试业务逻辑的所有JUnit类进行扩展。此父JUnit类将触发Spring批处理作业以在setUp方法中加载缓存。

  1. 在父JUnit类中触发Spring批处理作业的最佳方法是什么?

  2. src / test / java文件夹中的父JUnit类能否访问src / main / resources / META-INF文件夹中的Spring作业上下文文件?

  3. 请注意,目标是测试将使用Spring批处理工作的类,而不是测试Spring批处理作业本身。

1 个答案:

答案 0 :(得分:4)

回答您的具体问题:

  1. 要从JUnit测试启动Spring Batch作业,我们提供JobLauncherTestUtils类。可以在测试上下文中配置该类以启动与其关联的作业,然后将其连接到单元测试中。您可以在此处查看Spring Batch Samples模块中的特定示例:https://github.com/spring-projects/spring-batch/tree/master/spring-batch-samples

  2. 我认为您正在使用maven,在这种情况下,测试类应该能够看到常规类所做的一切,所以是的。

  3. 作为旁注,如果您尝试对业务代码进行单元测试,则可能需要考虑不运行批处理作业并单独测试业务代码。如果目标是执行整个系统的集成测试,那么您的方法是有意义的。