我目前正在了解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()
时,端到端测试是什么意思。它真的启动了工作吗?如果是这样,那么在没有模拟的情况下测试作业有什么意义呢?如果不是这样,那么它实际上是如何测试作业的呢?
我想了解当我们调用jobLauncherTestUtils.launchJob()时,对job进行端到端测试意味着什么。
端到端测试意味着基于其输入和输出的规范将作业作为黑盒进行测试。例如,让我们假设您的批处理作业期望从数据库表中读取数据并将其写入平面文件。
端到端测试将:
- 用一些样例记录填充测试数据库
- 运行作业
- 断言输出文件包含预期的记录
如果不单独测试该作业的内部步骤,则测试其从端(输入)到端(输出)的功能。
JobLauncherTestUtils
是一个实用程序类,允许您像这样运行整个作业。如果需要,它还允许您单独测试作业中的单个步骤。
是否实际启动作业。
是,作业将像在测试之外运行一样运行。JobLauncherTestUtils
只是一个在幕后使用常规JobLauncher
的实用程序类。您可以在单元测试中运行作业,而不需要此实用程序类。
如果是这样,那么在没有模拟的情况下测试作业有什么意义呢?
在没有模拟的情况下测试作业的目的是确保作业使用它所依赖或与之交互的真实资源按预期工作。您总是可以在测试中模拟数据库或消息代理,但是模拟代码可能有bug,并且不能反映数据库或消息代理的真实行为。