我应该选择哪种方法来测试我的 Spring 批处理作业?

Which approach should I choose for testing my Spring Batch Job?

目前我正在为 Spring Batch 应用程序进行一些集成测试。这样的应用程序从 SQL table 读取,在另一个 table 上写入,最后生成一个报告作为 .txt文件。

最初我只想确保我有另一个具有预期输出的文件并将其与报告文件进行比较并检查 table 内容。

(在某些情况下,我对 Spring 不是很有经验)。

但是,在阅读了 Baelung 上的一些文章后,我对我最初的方法产生了怀疑。

我是否应该操纵代码中的 table 内容以确保获得预期的输入?我应该使用 Spring 测试框架工具吗?没有他们,我能够 运行 我的测试工作?

批量作业集成测试的正确方法是将作业作为黑盒进行测试。如果作业从一个table读取数据并写入另一个table或文件,则可以进行如下处理:

  • 在输入中放入一些测试数据table(给定)
  • 运行你的工作(时间)
  • 对输出断言table/file(然后)

您可以在 End-To-End Testing of Batch Jobs section of the reference documentation. Spring Batch provides some test utilities that might help in testing your jobs (like mocking batch domain objects, asserting on file content, etc). Please refer to the org.springframework.batch.test 包中找到更多详细信息。