spring-batch - 了解 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()
,端到端的工作测试是什么意思。它是否真的启动了这项工作。如果是这样,那么在没有模拟的情况下测试工作的意义何在?如果不是这样,那么它实际上如何测试工作?
解决方案
我想了解当我们调用 jobLauncherTestUtils.launchJob() 时,作业的端到端测试是什么意思。
端到端测试意味着根据其输入和输出的规范将作业作为黑盒进行测试。例如,假设您的批处理作业需要从数据库表中读取数据并将其写入平面文件。
端到端测试将:
- 使用一些样本记录填充测试数据库
- 运行你的工作
- 断言输出文件包含预期的记录
无需单独测试此作业的内部步骤,您正在测试从端(输入)到端(输出)的功能。
JobLauncherTestUtils
是一个实用程序类,允许您像这样运行整个作业。如果需要,它还允许您单独测试作业中的单个步骤。
它是否真的启动了这项工作。
是的,该作业将像在测试之外运行一样运行。JobLauncherTestUtils
只是一个JobLauncher
在幕后使用常规的实用程序类。您可以在没有此实用程序类的情况下在单元测试中运行您的作业。
如果是这样,那么在没有模拟的情况下测试工作的意义何在?
在没有模拟的情况下测试作业的目的是确保作业在使用它所依赖或与之交互的真实资源时按预期工作。您始终可以在测试中模拟数据库或消息代理,但模拟代码可能存在错误,并且不能反映数据库或消息代理的真实行为。
推荐阅读
- package.json - 为什么debug出现在package.json文件中?
- python - python 3.5中的for循环问题for循环不按顺序打印字典键
- javascript - Safari SVG 到带有嵌入字体的画布
- python - 你将如何在 python 中为 threadpoolexecutor 传递两个参数?
- java - 键值在处理 Android 模式下无法正常工作
- spring - 使用 multipart/form-data 内容类型的 HTTP POST 假装日志记录
- opc-ua - OPC UA 连接到 IP 地址(无法解析主机名时)
- javascript - 在 JS 中监听事件
- git - 不要使用 git push 覆盖服务器上的特定目录
- bash - 为我的 EC2 实例运行用户数据时,我无法安装任何东西