Commit 517842c20ceb80cfc9e65ee6a5e4942e6e95007a
Committed by
Gitee
!21 job 单元测试增加校验调用
Merge pull request !21 from neilz/feature/ut-job
Showing
2 changed files
with
41 additions
and
20 deletions
src/main/java/cn/iocoder/dashboard/modules/infra/controller/job/vo/job/InfJobBaseVO.java
src/test/java/cn/iocoder/dashboard/modules/infra/service/job/InfJobServiceTest.java
| ... | ... | @@ -14,6 +14,9 @@ import static cn.iocoder.dashboard.util.RandomUtils.randomString; |
| 14 | 14 | import static org.junit.jupiter.api.Assertions.assertEquals; |
| 15 | 15 | import static org.junit.jupiter.api.Assertions.assertNotNull; |
| 16 | 16 | import static org.junit.jupiter.api.Assertions.assertNull; |
| 17 | +import static org.mockito.ArgumentMatchers.eq; | |
| 18 | +import static org.mockito.Mockito.times; | |
| 19 | +import static org.mockito.Mockito.verify; | |
| 17 | 20 | |
| 18 | 21 | import java.util.ArrayList; |
| 19 | 22 | import java.util.List; |
| ... | ... | @@ -84,6 +87,9 @@ public class InfJobServiceTest extends BaseDbUnitTest { |
| 84 | 87 | InfJobDO job = jobMapper.selectById(jobId); |
| 85 | 88 | assertPojoEquals(reqVO, job); |
| 86 | 89 | assertEquals(InfJobStatusEnum.NORMAL.getStatus(), job.getStatus()); |
| 90 | + // 校验调用 | |
| 91 | + verify(schedulerManager, times(1)).addJob(eq(job.getId()), eq(job.getHandlerName()), eq(job.getHandlerParam()), eq(job.getCronExpression()), | |
| 92 | + eq(reqVO.getRetryCount()), eq(reqVO.getRetryInterval())); | |
| 87 | 93 | } |
| 88 | 94 | |
| 89 | 95 | @Test |
| ... | ... | @@ -120,8 +126,6 @@ public class InfJobServiceTest extends BaseDbUnitTest { |
| 120 | 126 | job.setStatus(InfJobStatusEnum.NORMAL.getStatus()); |
| 121 | 127 | fillJobMonitorTimeoutEmpty(job); |
| 122 | 128 | jobMapper.insert(job); |
| 123 | - schedulerManager.addJob(job.getId(), job.getHandlerName(), job.getHandlerParam(), job.getCronExpression(), | |
| 124 | - createReqVO.getRetryCount(), createReqVO.getRetryInterval()); | |
| 125 | 129 | // 准备参数 |
| 126 | 130 | InfJobUpdateReqVO updateReqVO = randomPojo(InfJobUpdateReqVO.class, o -> { |
| 127 | 131 | o.setId(job.getId()); |
| ... | ... | @@ -133,6 +137,9 @@ public class InfJobServiceTest extends BaseDbUnitTest { |
| 133 | 137 | // 校验记录的属性是否正确 |
| 134 | 138 | InfJobDO updateJob = jobMapper.selectById(updateReqVO.getId()); |
| 135 | 139 | assertPojoEquals(updateReqVO, updateJob); |
| 140 | + // 校验调用 | |
| 141 | + verify(schedulerManager, times(1)).updateJob(eq(job.getHandlerName()), eq(updateReqVO.getHandlerParam()), eq(updateReqVO.getCronExpression()), | |
| 142 | + eq(updateReqVO.getRetryCount()), eq(updateReqVO.getRetryInterval())); | |
| 136 | 143 | } |
| 137 | 144 | |
| 138 | 145 | @Test |
| ... | ... | @@ -154,36 +161,51 @@ public class InfJobServiceTest extends BaseDbUnitTest { |
| 154 | 161 | } |
| 155 | 162 | |
| 156 | 163 | @Test |
| 157 | - public void testUpdateJobStatus_success() throws SchedulerException { | |
| 164 | + public void testUpdateJobStatus_NormalToStop_success() throws SchedulerException { | |
| 158 | 165 | // mock 数据 |
| 159 | 166 | InfJobCreateReqVO createReqVO = randomPojo(InfJobCreateReqVO.class, o -> o.setCronExpression("0 0/1 * * * ? *")); |
| 160 | 167 | InfJobDO job = InfJobConvert.INSTANCE.convert(createReqVO); |
| 161 | 168 | job.setStatus(InfJobStatusEnum.NORMAL.getStatus()); |
| 162 | 169 | fillJobMonitorTimeoutEmpty(job); |
| 163 | 170 | jobMapper.insert(job); |
| 164 | - schedulerManager.addJob(job.getId(), job.getHandlerName(), job.getHandlerParam(), job.getCronExpression(), | |
| 165 | - createReqVO.getRetryCount(), createReqVO.getRetryInterval()); | |
| 166 | 171 | // 调用 |
| 167 | 172 | jobService.updateJobStatus(job.getId(), InfJobStatusEnum.STOP.getStatus()); |
| 168 | 173 | // 校验记录的属性是否正确 |
| 169 | 174 | InfJobDO updateJob = jobMapper.selectById(job.getId()); |
| 170 | 175 | assertEquals(InfJobStatusEnum.STOP.getStatus(), updateJob.getStatus()); |
| 176 | + // 校验调用 | |
| 177 | + verify(schedulerManager, times(1)).pauseJob(eq(job.getHandlerName())); | |
| 178 | + } | |
| 179 | + | |
| 180 | + @Test | |
| 181 | + public void testUpdateJobStatus_StopToNormal_success() throws SchedulerException { | |
| 182 | + // mock 数据 | |
| 183 | + InfJobCreateReqVO createReqVO = randomPojo(InfJobCreateReqVO.class, o -> o.setCronExpression("0 0/1 * * * ? *")); | |
| 184 | + InfJobDO job = InfJobConvert.INSTANCE.convert(createReqVO); | |
| 185 | + job.setStatus(InfJobStatusEnum.STOP.getStatus()); | |
| 186 | + fillJobMonitorTimeoutEmpty(job); | |
| 187 | + jobMapper.insert(job); | |
| 188 | + // 调用 | |
| 189 | + jobService.updateJobStatus(job.getId(), InfJobStatusEnum.NORMAL.getStatus()); | |
| 190 | + // 校验记录的属性是否正确 | |
| 191 | + InfJobDO updateJob = jobMapper.selectById(job.getId()); | |
| 192 | + assertEquals(InfJobStatusEnum.NORMAL.getStatus(), updateJob.getStatus()); | |
| 193 | + // 校验调用 | |
| 194 | + verify(schedulerManager, times(1)).resumeJob(eq(job.getHandlerName())); | |
| 171 | 195 | } |
| 172 | 196 | |
| 173 | - /** | |
| 174 | - * 页面"执行一次"按钮功能集成测试发现问题: | |
| 175 | - * inf_job 表初始化任务 sysUserSessionTimeoutJob 点击报错,是因为 Job 并没有添加到 Quartz 中; | |
| 176 | - * 没有走 createJob 中 scheduler.scheduleJob() 这一步,报错任务找不到。 | |
| 177 | - * // FINISHED Quartz 相关表新增初始化任务 sysUserSessionTimeoutJob sql | |
| 178 | - */ | |
| 179 | 197 | @Test |
| 180 | 198 | public void testTriggerJob_success() throws SchedulerException { |
| 181 | - /** | |
| 182 | - * TODO 不知道是否要将 Quartz 相关 SQL 引入来做单元测试 | |
| 183 | - * 1、schedulerManager.addJob sysUserSessionTimeoutJob | |
| 184 | - * 2、schedulerManager.triggerJob | |
| 185 | - * 3、check inf_job_log | |
| 186 | - */ | |
| 199 | + // mock 数据 | |
| 200 | + InfJobCreateReqVO createReqVO = randomPojo(InfJobCreateReqVO.class, o -> o.setCronExpression("0 0/1 * * * ? *")); | |
| 201 | + InfJobDO job = InfJobConvert.INSTANCE.convert(createReqVO); | |
| 202 | + job.setStatus(InfJobStatusEnum.NORMAL.getStatus()); | |
| 203 | + fillJobMonitorTimeoutEmpty(job); | |
| 204 | + jobMapper.insert(job); | |
| 205 | + // 调用 | |
| 206 | + jobService.triggerJob(job.getId()); | |
| 207 | + // 校验调用 | |
| 208 | + verify(schedulerManager, times(1)).triggerJob(eq(job.getId()), eq(job.getHandlerName()), eq(job.getHandlerParam())); | |
| 187 | 209 | } |
| 188 | 210 | |
| 189 | 211 | @Test |
| ... | ... | @@ -194,12 +216,12 @@ public class InfJobServiceTest extends BaseDbUnitTest { |
| 194 | 216 | job.setStatus(InfJobStatusEnum.NORMAL.getStatus()); |
| 195 | 217 | fillJobMonitorTimeoutEmpty(job); |
| 196 | 218 | jobMapper.insert(job); |
| 197 | - schedulerManager.addJob(job.getId(), job.getHandlerName(), job.getHandlerParam(), job.getCronExpression(), | |
| 198 | - createReqVO.getRetryCount(), createReqVO.getRetryInterval()); | |
| 199 | 219 | // 调用 UPDATE inf_job SET deleted=1 WHERE id=? AND deleted=0 |
| 200 | 220 | jobService.deleteJob(job.getId()); |
| 201 | 221 | // 校验数据不存在了 WHERE id=? AND deleted=0 查询为空正常 |
| 202 | 222 | assertNull(jobMapper.selectById(job.getId())); |
| 223 | + // 校验调用 | |
| 224 | + verify(schedulerManager, times(1)).deleteJob(eq(job.getHandlerName())); | |
| 203 | 225 | } |
| 204 | 226 | |
| 205 | 227 | @Test | ... | ... |