首页 > 解决方案 > 了解 JobLauncherTestUtils

问题描述

我目前正在了解jobLauncherTestUtils。我从多个资源中阅读过它,例如: https ://docs.spring.io/spring-batch/docs/current/api/org/springframework/batch/test/JobLauncherTestUtils.html

https://livebook.manning.com/concept/spring/joblaunchertestutils

我想了解当我们调用时jobLauncherTestUtils.launchJob(),端到端的工作测试是什么意思。它是否真的启动了这项工作。如果是这样,那么在没有模拟的情况下测试工作的意义何在?如果不是这样,那么它实际上如何测试工作?

标签: spring-batch

解决方案


我想了解当我们调用 jobLauncherTestUtils.launchJob() 时,作业的端到端测试是什么意思。

端到端测试意味着根据其输入和输出的规范将作业作为黑盒进行测试。例如,假设您的批处理作业需要从数据库表中读取数据并将其写入平面文件。

端到端测试将:

  1. 使用一些样本记录填充测试数据库
  2. 运行你的工作
  3. 断言输出文件包含预期的记录

无需单独测试此作业的内部步骤,您正在测试从端(输入)到端(输出)的功能。

JobLauncherTestUtils是一个实用程序类,允许您像这样运行整个作业。如果需要,它还允许您单独测试作业中的单个步骤。

它是否真的启动了这项工作。

是的,该作业将像在测试之外运行一样运行。JobLauncherTestUtils只是一个JobLauncher在幕后使用常规的实用程序类。您可以在没有此实用程序类的情况下在单元测试中运行您的作业。

如果是这样,那么在没有模拟的情况下测试工作的意义何在?

在没有模拟的情况下测试作业的目的是确保作业在使用它所依赖或与之交互的真实资源时按预期工作。您始终可以在测试中模拟数据库或消息代理,但模拟代码可能存在错误,并且不能反映数据库或消息代理的真实行为。


推荐阅读