【问题标题】:Spring Batch Step Integration TestingSpring Batch 步骤集成测试
【发布时间】:2018-09-27 17:45:24
【问题描述】:

我正在寻找一些关于测试 Spring 批处理步骤和步骤执行的一般意见和建议。

我的基本步骤是从 api 读取,处理成实体对象,然后写入数据库。我已经测试了快乐的路径,该步骤成功完成。我现在要做的是在处理器阶段缺少数据时测试异常处理。我可以单独测试处理器类,但我宁愿测试整个步骤,以确保在步骤/作业级别正确反映进程失败。

我已经阅读了春季批量测试指南,老实说,我有点迷失其中。是否可以使用 StepScopeTestUtils.doInStepScope 或更新 StepExecution 来测试这种情况?理想情况下,我会强制读者在处理器启动之前返回错误数据。

任何建议将不胜感激。

【问题讨论】:

    标签: spring spring-boot spring-batch


    【解决方案1】:

    最佳方法取决于您的测试范围。在这里稍微阅读一下,我假设您正在使用 Spring IT,设置 Spring 上下文并使用 JobLauncherTestUtils 开始工作或步骤。

    我认为最简单的方法是用一个触发错误场景的模拟替换你的一个 bean。使用 Mockito,这可以通过在您的测试配置中添加类似的内容来完成。

    @Bean
    public ReaderDataRepository dataApi(){
        return mock(ReaderDataRepository.class);
    }
    

    然后这个 bean 会覆盖实际的实现。在测试设置中,您可以非常明确地配置此模拟。

    @Autowired
    private ReaderDataRepository mockedRepository;
    
    @Before
    public void setUp() {
        when(mockedRepository.getData()).thenReturn(faultyData())
    }
    

    这涉及到对 Spring 'magic' 的很少操作,并且非常明确地定义了测试中的错误。

    【讨论】:

    • 非常感谢。这个答案非常有道理。一旦我成功实施,将接受并更新我自己的评论。
    猜你喜欢
    • 1970-01-01
    • 2015-03-24
    • 2023-03-28
    • 1970-01-01
    • 1970-01-01
    • 2019-12-21
    • 2016-02-26
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多