Spring Batch 单元测试

编程入门 行业动态 更新时间:2024-10-24 23:27:11

Spring Batch <a href=https://www.elefans.com/category/jswz/34/1771349.html style=单元测试"/>

Spring Batch 单元测试

大家好,我是神韵,是一个技术&生活博主。出文章目的主要是两个,一是好记忆不如烂笔头,记录总结中提高自己。二是希望我的文章可以帮到大家。欢迎来点赞打卡,你们的行动将是我无限的动力。
本篇主题是:Spring Batch 单元测试

Spring Batch 官网也介绍了很多,感兴趣可以先看一看
Spring Batch Unit Testing
下面进入本文主题
1、添加依赖

    <dependency><groupId>org.springframework.batch</groupId><artifactId>spring-batch-test</artifactId><scope>test</scope><version>4.3.3</version></dependency>

2、测试类修饰注解

@SpringBootTest
@RunWith(SpringRunner.class)
@ContextConfiguration(classes = { SpringBatchApplication.class })
@ActiveProfiles(value = "test")

其中RunWith是必须的;SpringBootTest/ContextConfiguration可以二选一,也可以一起用上,前者功能比较多,后者指定了加载的配置类,我这里直接配置的是boot启动类。ActiveProfiles指定环境生效,我这里配置test配置文件。

3、需要的变量

    private JobLauncherTestUtils jobLauncherTestUtils;@Autowiredprivate JobLauncher launcher;@Autowiredprivate JobRepository repository;@Autowiredprivate JobBuilderFactory jobBuilderFactory;@Autowiredprivate ReadDB config;@Autowiredprivate Step readDBStep;@Beforepublic void setup() {jobLauncherTestUtils = new JobLauncherTestUtils();jobLauncherTestUtils.setJob(config.readDBJob(jobBuilderFactory, readDBStep));jobLauncherTestUtils.setJobLauncher(launcher);jobLauncherTestUtils.setJobRepository(repository);}

主要需要借助JobLauncherTestUtils类来完成单元测试,这里所有的注入变量都是为了配置JobLauncherTestUtils,在setup方法中配置job,jobLauncher和jobRepository三个变量。其中主要解释一下job,这个是将配置类ReadDB通过Autowired方式注入,然后通过get方法获得一个Job类,最后通过setJob方式填充入JobLauncherTestUtils,其中ReadDB看下面截图

以下都是作为补充
其实很多时候也是可以在自己写的job中,将JobBuilderFactory和Step用@Autowired的方式注入,这个时候就不用跟我上面注入Job一样,对测试时就不需要@Autowired这两个参数了,如下

此时测试类将变成

4、写测试方法
配置好了JobLauncherTestUtils,接下来就是写测试Job,测试Step两部曲,其它processor,listener等这里暂时没有写入,但是测试也已经遍历了它们。
测试Job

    @Testpublic void testReadDBJob() throws Exception {JobExecution result = jobLauncherTestUtils.launchJob();Assert.assertNotNull(result);Assert.assertEquals(BatchStatus.COMPLETED, result.getStatus());}

测试Step

    // Test step@Testpublic void testReadDBStep() {JobExecution result = jobLauncherTestUtils.launchStep("readDBStep");Assert.assertNotNull(result);Assert.assertEquals(BatchStatus.COMPLETED, result.getStatus());}

全代码

@SpringBootTest
@RunWith(SpringRunner.class)
@ContextConfiguration(classes = { SpringBatchApplication.class })
@ActiveProfiles(value = "test")
public class ReadDBTest {private JobLauncherTestUtils jobLauncherTestUtils;@Autowiredprivate JobLauncher launcher;@Autowiredprivate JobRepository repository;@Autowiredprivate JobBuilderFactory jobBuilderFactory;@Autowiredprivate ReadDB config;@Autowiredprivate Step readDBStep;public ReadDBTest() {}@Beforepublic void setup() {jobLauncherTestUtils = new JobLauncherTestUtils();// job 为具体job,每个不同test job都不一样jobLauncherTestUtils.setJob(config.readDBJob(jobBuilderFactory, readDBStep));jobLauncherTestUtils.setJobLauncher(launcher);jobLauncherTestUtils.setJobRepository(repository);}// Test job@Testpublic void testReadDBJob() throws Exception {JobExecution result = jobLauncherTestUtils.launchJob();Assert.assertNotNull(result);Assert.assertEquals(BatchStatus.COMPLETED, result.getStatus());}// Test step@Testpublic void testReadDBStep() {// readDBStep为单元测试具体名称JobExecution result = jobLauncherTestUtils.launchStep("readDBStep");Assert.assertNotNull(result);Assert.assertEquals(BatchStatus.COMPLETED, result.getStatus());}
}

本文代码 GitHub link: shenyun499
到此一个Job测试完毕,本文结束!

更多推荐

Spring Batch 单元测试

本文发布于:2024-03-08 17:08:01,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1721556.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:单元测试   Spring   Batch

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!