gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-11-30 07:08:54 25 4
gpt4 key购买 nike

背景:

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

要求:

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

问题:

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

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

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

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

最佳答案

回答您的具体问题:

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

  2. 我假设您使用的是 maven,在这种情况下,测试类应该可以看到常规类所做的一切,所以是的,它应该。

附带说明一下,如果您尝试对业务代码进行单元测试,您可能需要考虑不运行批处理作业并单独测试业务代码。如果目标是对整个系统执行集成测试,那么您的方法就有意义。

关于java - 在 JUnit 测试用例中触发 Spring 批处理作业,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23722736/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com