当前位置: 首页 > 知识库问答 >
问题:

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

陶征
2023-03-14

背景:

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

要求:

我被分配了对业务逻辑层进行单元测试的任务。由于业务逻辑层假设数据将在缓存中可用,所以在测试业务逻辑类之前,我需要一种在单元测试中触发Spring批处理作业的方法。

问题是:

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

>

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

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

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

  • 共有1个答案

    梅逸清
    2023-03-14

    要回答您的具体问题:

    >

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

    作为补充说明,如果您试图对业务代码进行单元测试,可能需要考虑不运行批处理作业,而是单独测试业务代码。如果目标是对整个系统进行集成测试,那么您的方法是有意义的。

     类似资料:
    • 我今天好像赢不了... 有没有一种方法可以从Spock SpringBootTest集成测试中的关系中读取,而无需将测试注释为或添加不切实际的? 或者,是否有方法从测试用例中启动Spring-Batch作业? 让我详细说明... 我试图为我的Spring Batch reporting流程提供一个简单的Spring Boot Integration测试,该测试从Dangled web of DB2

    • 我不确定我是否能清楚地解释我的情况。请建议您对spring-batch作业测试E2E流是否有其他更好的意见,以及您是否可以对上述方法提供任何清晰的说明,这将是有帮助的。

    • 我希望能够用REST控制器开始我的作业,然后当作业开始时,它应该在计划的基础上运行,直到我用REST再次停止它。

    • 我试图通过一个web url(Servlet/Spring MVC)触发一个批处理作业,当从主程序启动时,该url可以很好地工作。当我启动web服务器并点击url时,程序会给我一个异常,即jobLauncher未解析。 这是我完美工作的配置,批处理配置,主程序。我在这里通过servlet调用spring批处理 11:02:37.206[TOMCAT-HTTP-24]DEBUG o.s.web.se

    • 我们使用spring-core和spring-beans 3.2.5、spring-batch-integration 1.2.2、spring-integration-core 3.0.5、spring-integration-file、-http、-sftp、-stream 2.0.3

    • 问题内容: 我正在为现有的Java Swing应用程序执行一些测试,以便可以安全地重构和扩展代码而不会破坏任何内容。我从JUnit中的一些单元测试开始,因为这似乎是最简单的入门方法,但是现在我的首要任务是创建一些端到端测试,以对整个应用程序进行练习。 我将每种测试方法放在一个单独的测试用例中,并在Ant的任务中使用该选项,从而在每个测试中重新启动应用程序。但是,我想作为测试实现的一些用例涉及用户退