Commit aaf762e74f6cbda49ed2543c8b76355ae10bba6d

Authored by YunaiV
1 parent ea882102

1. 调整 codegen 的模板

2. 编写 ut 的代码生成器模板
src/main/java/cn/iocoder/dashboard/modules/tool/service/codegen/impl/ToolCodegenEngine.java
... ... @@ -53,9 +53,7 @@ public class ToolCodegenEngine {
53 53 * value:生成的路径
54 54 */
55 55 private static final Map<String, String> TEMPLATES = MapUtil.<String, String>builder(new LinkedHashMap<>()) // 有序
56   - // Java
57   - .put(javaTemplatePath("controller/controller"),
58   - javaFilePath("controller/${table.businessName}/${table.className}Controller"))
  56 + // Java Main
59 57 .put(javaTemplatePath("controller/vo/baseVO"),
60 58 javaFilePath("controller/${table.businessName}/vo/${table.className}BaseVO"))
61 59 .put(javaTemplatePath("controller/vo/createReqVO"),
... ... @@ -70,6 +68,8 @@ public class ToolCodegenEngine {
70 68 javaFilePath("controller/${table.businessName}/vo/${table.className}ExportReqVO"))
71 69 .put(javaTemplatePath("controller/vo/excelVO"),
72 70 javaFilePath("controller/${table.businessName}/vo/${table.className}ExcelVO"))
  71 + .put(javaTemplatePath("controller/controller"),
  72 + javaFilePath("controller/${table.businessName}/${table.className}Controller"))
73 73 .put(javaTemplatePath("convert/convert"),
74 74 javaFilePath("convert/${table.businessName}/${table.className}Convert"))
75 75 .put(javaTemplatePath("dal/do"),
... ... @@ -78,10 +78,13 @@ public class ToolCodegenEngine {
78 78 javaFilePath("dal/mysql/${table.businessName}/${table.className}Mapper"))
79 79 .put(javaTemplatePath("enums/errorcode"),
80 80 javaFilePath("enums/${simpleModuleName_upperFirst}ErrorCodeConstants"))
81   - .put(javaTemplatePath("service/service"),
82   - javaFilePath("service/${table.businessName}/${table.className}Service"))
83 81 .put(javaTemplatePath("service/serviceImpl"),
84 82 javaFilePath("service/${table.businessName}/impl/${table.className}ServiceImpl"))
  83 + .put(javaTemplatePath("service/service"),
  84 + javaFilePath("service/${table.businessName}/${table.className}Service"))
  85 + // Java Test
  86 + .put(javaTemplatePath("test/serviceTest"),
  87 + javaFilePath("service/${table.businessName}/${table.className}ServiceTest"))
85 88 // Vue
86 89 .put(vueTemplatePath("views/index.vue"),
87 90 vueFilePath("views/${table.moduleName}/${classNameVar}/index.vue"))
... ...
src/main/resources/application-dev.yaml
... ... @@ -154,7 +154,7 @@ yudao:
154 154 file:
155 155 base-path: http://127.0.0.1:${server.port}/${yudao.web.api-prefix}/file/get/
156 156 codegen:
157   - base-package: ${yudao.info.base-package}.modules
  157 + base-package: ${yudao.info.base-package}
158 158 db-schemas: ${spring.datasource.name}
159 159 xss:
160 160 enable: false
... ...
src/main/resources/application-local.yaml
... ... @@ -154,7 +154,7 @@ yudao:
154 154 file:
155 155 base-path: http://127.0.0.1:${server.port}/${yudao.web.api-prefix}/file/get/
156 156 codegen:
157   - base-package: ${yudao.info.base-package}.modules
  157 + base-package: ${yudao.info.base-package}
158 158 db-schemas: ${spring.datasource.name}
159 159 xss:
160 160 enable: false
... ...
src/main/resources/codegen/java/controller/controller.vm
1   -package ${basePackage}.${table.moduleName}.controller.${table.businessName};
  1 +package ${basePackage}.modules.${table.moduleName}.controller.${table.businessName};
2 2  
3 3 import org.springframework.web.bind.annotation.*;
4 4 import javax.annotation.Resource;
... ... @@ -22,10 +22,10 @@ import ${ExcelUtilsClassName};
22 22 import ${OperateLogClassName};
23 23 import static ${OperateTypeEnumClassName}.*;
24 24  
25   -import ${basePackage}.${table.moduleName}.controller.${table.businessName}.vo.*;
26   -import ${basePackage}.${table.moduleName}.dal.dataobject.${table.businessName}.${table.className}DO;
27   -import ${basePackage}.${table.moduleName}.convert.${table.businessName}.${table.className}Convert;
28   -import ${basePackage}.${table.moduleName}.service.${table.businessName}.${table.className}Service;
  25 +import ${basePackage}.modules.${table.moduleName}.controller.${table.businessName}.vo.*;
  26 +import ${basePackage}.modules.${table.moduleName}.dal.dataobject.${table.businessName}.${table.className}DO;
  27 +import ${basePackage}.modules.${table.moduleName}.convert.${table.businessName}.${table.className}Convert;
  28 +import ${basePackage}.modules.${table.moduleName}.service.${table.businessName}.${table.className}Service;
29 29  
30 30 @Api(tags = "${table.classComment}")
31 31 @RestController
... ...
src/main/resources/codegen/java/controller/vo/baseVO.vm
1   -package ${basePackage}.${table.moduleName}.controller.${table.businessName}.vo;
  1 +package ${basePackage}.modules.${table.moduleName}.controller.${table.businessName}.vo;
2 2  
3 3 import lombok.*;
4 4 import java.util.*;
... ...
src/main/resources/codegen/java/controller/vo/createReqVO.vm
1   -package ${basePackage}.${table.moduleName}.controller.${table.businessName}.vo;
  1 +package ${basePackage}.modules.${table.moduleName}.controller.${table.businessName}.vo;
2 2  
3 3 import lombok.*;
4 4 import java.util.*;
... ...
src/main/resources/codegen/java/controller/vo/excelVO.vm
1   -package ${basePackage}.${table.moduleName}.controller.${table.businessName}.vo;
  1 +package ${basePackage}.modules.${table.moduleName}.controller.${table.businessName}.vo;
2 2  
3 3 import lombok.*;
4 4 import java.util.*;
... ...
src/main/resources/codegen/java/controller/vo/exportReqVO.vm
1   -package ${basePackage}.${table.moduleName}.controller.${table.businessName}.vo;
  1 +package ${basePackage}.modules.${table.moduleName}.controller.${table.businessName}.vo;
2 2  
3 3 import lombok.*;
4 4 import java.util.*;
... ...
src/main/resources/codegen/java/controller/vo/pageReqVO.vm
1   -package ${basePackage}.${table.moduleName}.controller.${table.businessName}.vo;
  1 +package ${basePackage}.modules.${table.moduleName}.controller.${table.businessName}.vo;
2 2  
3 3 import lombok.*;
4 4 import java.util.*;
... ...
src/main/resources/codegen/java/controller/vo/respVO.vm
1   -package ${basePackage}.${table.moduleName}.controller.${table.businessName}.vo;
  1 +package ${basePackage}.modules.${table.moduleName}.controller.${table.businessName}.vo;
2 2  
3 3 import lombok.*;
4 4 import java.util.*;
... ...
src/main/resources/codegen/java/controller/vo/updateReqVO.vm
1   -package ${basePackage}.${table.moduleName}.controller.${table.businessName}.vo;
  1 +package ${basePackage}.modules.${table.moduleName}.controller.${table.businessName}.vo;
2 2  
3 3 import lombok.*;
4 4 import java.util.*;
... ...
src/main/resources/codegen/java/convert/convert.vm
1   -package ${basePackage}.${table.moduleName}.convert.${table.businessName};
  1 +package ${basePackage}.modules.${table.moduleName}.convert.${table.businessName};
2 2  
3 3 import java.util.*;
4 4  
... ... @@ -6,8 +6,8 @@ import ${PageResultClassName};
6 6  
7 7 import org.mapstruct.Mapper;
8 8 import org.mapstruct.factory.Mappers;
9   -import ${basePackage}.${table.moduleName}.controller.${table.businessName}.vo.*;
10   -import ${basePackage}.${table.moduleName}.dal.dataobject.${table.businessName}.${table.className}DO;
  9 +import ${basePackage}.modules.${table.moduleName}.controller.${table.businessName}.vo.*;
  10 +import ${basePackage}.modules.${table.moduleName}.dal.dataobject.${table.businessName}.${table.className}DO;
11 11  
12 12 /**
13 13 * ${table.classComment} Convert
... ...
src/main/resources/codegen/java/dal/do.vm
1   -package ${basePackage}.${table.moduleName}.dal.dataobject.${table.businessName};
  1 +package ${basePackage}.modules.${table.moduleName}.dal.dataobject.${table.businessName};
2 2  
3 3 import lombok.*;
4 4 import java.util.*;
... ...
src/main/resources/codegen/java/dal/mapper.vm
1   -package ${basePackage}.${table.moduleName}.dal.mysql.${table.businessName};
  1 +package ${basePackage}.modules.${table.moduleName}.dal.mysql.${table.businessName};
2 2  
3 3 import java.util.*;
4 4  
5 5 import ${PageResultClassName};
6 6 import ${QueryWrapperClassName};
7 7 import ${BaseMapperClassName};
8   -import ${basePackage}.${table.moduleName}.dal.dataobject.${table.businessName}.${table.className}DO;
  8 +import ${basePackage}.modules.${table.moduleName}.dal.dataobject.${table.businessName}.${table.className}DO;
9 9 import org.apache.ibatis.annotations.Mapper;
10   -import ${basePackage}.${table.moduleName}.controller.${table.businessName}.vo.*;
  10 +import ${basePackage}.modules.${table.moduleName}.controller.${table.businessName}.vo.*;
11 11  
12 12 ## 字段模板
13 13 #macro(listCondition)
... ...
src/main/resources/codegen/java/service/service.vm
1   -package ${basePackage}.${table.moduleName}.service.${table.businessName};
  1 +package ${basePackage}.modules.${table.moduleName}.service.${table.businessName};
2 2  
3 3 import java.util.*;
4 4 import javax.validation.*;
5   -import ${basePackage}.${table.moduleName}.controller.${table.businessName}.vo.*;
6   -import ${basePackage}.${table.moduleName}.dal.dataobject.${table.businessName}.${table.className}DO;
  5 +import ${basePackage}.modules.${table.moduleName}.controller.${table.businessName}.vo.*;
  6 +import ${basePackage}.modules.${table.moduleName}.dal.dataobject.${table.businessName}.${table.className}DO;
7 7 import ${PageResultClassName};
8 8  
9 9 /**
... ...
src/main/resources/codegen/java/service/serviceImpl.vm
1   -package ${basePackage}.${table.moduleName}.service.${table.businessName}.impl;
  1 +package ${basePackage}.modules.${table.moduleName}.service.${table.businessName}.impl;
2 2  
3 3 import org.springframework.beans.factory.annotation.Autowired;
4 4 import org.springframework.stereotype.Service;
... ... @@ -6,17 +6,17 @@ import javax.annotation.Resource;
6 6 import org.springframework.validation.annotation.Validated;
7 7  
8 8 import java.util.*;
9   -import ${basePackage}.${table.moduleName}.controller.${table.businessName}.vo.*;
10   -import ${basePackage}.${table.moduleName}.dal.dataobject.${table.businessName}.${table.className}DO;
  9 +import ${basePackage}.modules.${table.moduleName}.controller.${table.businessName}.vo.*;
  10 +import ${basePackage}.modules.${table.moduleName}.dal.dataobject.${table.businessName}.${table.className}DO;
11 11 import ${PageResultClassName};
12 12  
13   -import ${basePackage}.${table.moduleName}.convert.${table.businessName}.${table.className}Convert;
14   -import ${basePackage}.${table.moduleName}.dal.mysql.${table.businessName}.${table.className}Mapper;
15   -import ${basePackage}.${table.moduleName}.service.${table.businessName}.${table.className}Service;
  13 +import ${basePackage}.modules.${table.moduleName}.convert.${table.businessName}.${table.className}Convert;
  14 +import ${basePackage}.modules.${table.moduleName}.dal.mysql.${table.businessName}.${table.className}Mapper;
  15 +import ${basePackage}.modules.${table.moduleName}.service.${table.businessName}.${table.className}Service;
16 16  
17 17 import ${ServiceExceptionUtilClassName};
18 18  
19   -import static ${basePackage}.${table.moduleName}.enums.${simpleModuleName_upperFirst}ErrorCodeConstants.*;
  19 +import static ${basePackage}.modules.${table.moduleName}.enums.${simpleModuleName_upperFirst}ErrorCodeConstants.*;
20 20  
21 21 /**
22 22 * ${table.classComment} Service 实现类
... ...
src/main/resources/codegen/java/test/serviceTest.vm 0 → 100644
  1 +package ${basePackage}.modules.${table.moduleName}.service.${table.businessName};
  2 +
  3 +import ${basePackage}.BaseSpringBootUnitTest;
  4 +
  5 +import org.junit.jupiter.api.Test;
  6 +import org.springframework.boot.test.mock.mockito.MockBean;
  7 +
  8 +import javax.annotation.Resource;
  9 +
  10 +import cn.iocoder.dashboard.BaseSpringBootUnitTest;
  11 +import ${basePackage}.modules.${table.moduleName}.service.${table.businessName}.impl.${table.className}ServiceImpl;
  12 +import ${basePackage}.modules.${table.moduleName}.controller.${table.businessName}.vo.*;
  13 +import ${basePackage}.modules.${table.moduleName}.dal.dataobject.${table.businessName}.${table.className}DO;
  14 +import ${basePackage}.modules.${table.moduleName}.dal.mysql.${table.businessName}.${table.className}Mapper;
  15 +
  16 +import javax.annotation.Resource;
  17 +
  18 +import static cn.hutool.core.util.RandomUtil.*;
  19 +import static ${basePackage}.modules.${table.moduleName}.enums.${simpleModuleName_upperFirst}ErrorCodeConstants.*;
  20 +import static cn.iocoder.dashboard.util.AssertUtils.*;
  21 +import static cn.iocoder.dashboard.util.RandomUtils.*;
  22 +import static cn.iocoder.dashboard.util.date.DateUtils.*;
  23 +import static org.junit.jupiter.api.Assertions.*;
  24 +import static org.mockito.Mockito.*;
  25 +
  26 +/**
  27 +* {@link ${table.className}ServiceImpl} 的单元测试类
  28 +*
  29 +* @author ${table.author}
  30 +*/
  31 +public class ${table.className}ServiceTest extends BaseSpringBootUnitTest {
  32 +
  33 + @Resource
  34 + private ${table.className}ServiceImpl ${classNameVar}Service;
  35 +
  36 + @Resource
  37 + private ${table.className}Mapper ${classNameVar}Mapper;
  38 +
  39 + @Test
  40 + public void testCreate${simpleClassName}_success() {
  41 + // 准备参数
  42 + ${table.className}CreateReqVO reqVO = randomPojo(${table.className}CreateReqVO.class);
  43 +
  44 + // 调用
  45 + Long ${classNameVar}Id = ${classNameVar}Service.create${simpleClassName}(reqVO);
  46 + // 断言
  47 + assertNotNull(${classNameVar}Id);
  48 + // 校验记录的属性是否正确
  49 + ${table.className}DO ${classNameVar} = ${classNameVar}Mapper.selectById(${classNameVar}Id);
  50 + assertPojoEquals(reqVO, ${classNameVar});
  51 + }
  52 +
  53 + @Test
  54 + public void testUpdate${simpleClassName}_success() {
  55 + // mock 数据
  56 + ${table.className}DO db${simpleClassName} = randomPojo(${table.className}DO.class);
  57 + ${classNameVar}Mapper.insert(db${simpleClassName});// @Sql: 先插入出一条存在的数据
  58 + // 准备参数
  59 + ${table.className}UpdateReqVO reqVO = randomPojo(${table.className}UpdateReqVO.class, o -> {
  60 + o.setId(db${simpleClassName}.getId()); // 设置更新的 ID
  61 + });
  62 +
  63 + // 调用
  64 + ${classNameVar}Service.update${simpleClassName}(reqVO);
  65 + // 校验是否更新正确
  66 + ${table.className}DO ${classNameVar} = ${classNameVar}Mapper.selectById(reqVO.getId()); // 获取最新的
  67 + assertPojoEquals(reqVO, ${classNameVar});
  68 + }
  69 +
  70 + @Test
  71 + public void testUpdate${simpleClassName}_notExists() {
  72 + // 准备参数
  73 + ${table.className}UpdateReqVO reqVO = randomPojo(${table.className}UpdateReqVO.class);
  74 +
  75 + // 调用, 并断言异常
  76 + assertServiceException(() -> ${classNameVar}Service.update${simpleClassName}(reqVO), ${simpleClassName_underlineCase.toUpperCase()}_NOT_EXISTS);
  77 + }
  78 +
  79 + @Test
  80 + public void testDelete${simpleClassName}_success() {
  81 + // mock 数据
  82 + ${table.className}DO db${simpleClassName} = randomPojo(${table.className}DO.class);
  83 + ${classNameVar}Mapper.insert(db${simpleClassName});// @Sql: 先插入出一条存在的数据
  84 + // 准备参数
  85 + Long id = db${simpleClassName}.getId();
  86 +
  87 + // 调用
  88 + ${classNameVar}Service.delete${simpleClassName}(id);
  89 + // 校验数据不存在了
  90 + assertNull(configMapper.selectById(id));
  91 + }
  92 +
  93 + @Test
  94 + public void testDelete${simpleClassName}_notExists() {
  95 + // 准备参数
  96 + Long id = randomLongId();
  97 +
  98 + // 调用, 并断言异常
  99 + assertServiceException(() -> ${classNameVar}Service.delete${simpleClassName}(id), ${simpleClassName_underlineCase.toUpperCase()}_NOT_EXISTS);
  100 + }
  101 +
  102 + @Test
  103 + public void testGet${simpleClassName}Page() {
  104 + // mock 数据
  105 + ${table.className}DO db${simpleClassName} = randomPojo(${table.className}DO.class, o -> {); // 等会查询到
  106 +
  107 + });
  108 + ${classNameVar}Mapper.insert(db${simpleClassName});
  109 + }
  110 +
  111 +}
... ...
src/test/java/cn/iocoder/dashboard/modules/infra/service/config/InfConfigServiceImplTest.java renamed to src/test/java/cn/iocoder/dashboard/modules/infra/service/config/InfConfigServiceTest.java
... ... @@ -20,24 +20,26 @@ import javax.annotation.Resource;
20 20 import java.util.List;
21 21 import java.util.function.Consumer;
22 22  
23   -import static cn.hutool.core.util.RandomUtil.randomEle;
  23 +import static cn.hutool.core.util.RandomUtil.*;
24 24 import static cn.iocoder.dashboard.modules.infra.enums.InfErrorCodeConstants.*;
25   -import static cn.iocoder.dashboard.util.AssertUtils.assertPojoEquals;
26   -import static cn.iocoder.dashboard.util.AssertUtils.assertServiceException;
27   -import static cn.iocoder.dashboard.util.RandomUtils.randomPojo;
28   -import static cn.iocoder.dashboard.util.date.DateUtils.buildTime;
  25 +import static cn.iocoder.dashboard.util.AssertUtils.*;
  26 +import static cn.iocoder.dashboard.util.RandomUtils.*;
  27 +import static cn.iocoder.dashboard.util.date.DateUtils.*;
29 28 import static org.junit.jupiter.api.Assertions.*;
30   -import static org.mockito.Mockito.times;
31   -import static org.mockito.Mockito.verify;
  29 +import static org.mockito.Mockito.*;
32 30  
33   -public class InfConfigServiceImplTest extends BaseSpringBootUnitTest {
  31 +/**
  32 + * {@link InfConfigServiceImpl} 的单元测试类
  33 + *
  34 + * @author 芋道源码
  35 + */
  36 +public class InfConfigServiceTest extends BaseSpringBootUnitTest {
34 37  
35 38 @Resource
36 39 private InfConfigServiceImpl configService;
37 40  
38 41 @Resource
39 42 private InfConfigMapper configMapper;
40   -
41 43 @MockBean
42 44 private InfConfigProducer configProducer;
43 45  
... ... @@ -213,6 +215,15 @@ public class InfConfigServiceImplTest extends BaseSpringBootUnitTest {
213 215 assertServiceException(() -> configService.deleteConfig(id), CONFIG_CAN_NOT_DELETE_SYSTEM_TYPE);
214 216 }
215 217  
  218 + @Test
  219 + public void testDeleteConfig_notExists() {
  220 + // 准备参数
  221 + Long id = randomLongId();
  222 +
  223 + // 调用, 并断言异常
  224 + assertServiceException(() -> configService.deleteConfig(id), CONFIG_NOT_EXISTS);
  225 + }
  226 +
216 227 // ========== 随机对象 ==========
217 228  
218 229 @SafeVarargs
... ...
src/test/java/cn/iocoder/dashboard/modules/infra/service/job/InfConfigServiceTest.java 0 → 100644
  1 +package cn.iocoder.dashboard.modules.infra.service.job;
  2 +
  3 +import cn.iocoder.dashboard.BaseSpringBootUnitTest;
  4 +import cn.iocoder.dashboard.modules.infra.controller.config.vo.InfConfigCreateReqVO;
  5 +import cn.iocoder.dashboard.modules.infra.controller.config.vo.InfConfigUpdateReqVO;
  6 +import cn.iocoder.dashboard.modules.infra.dal.dataobject.config.InfConfigDO;
  7 +import cn.iocoder.dashboard.modules.infra.dal.mysql.config.InfConfigMapper;
  8 +import cn.iocoder.dashboard.modules.infra.service.config.impl.InfConfigServiceImpl;
  9 +import org.junit.jupiter.api.Test;
  10 +
  11 +import javax.annotation.Resource;
  12 +
  13 +import static cn.iocoder.dashboard.modules.infra.enums.InfErrorCodeConstants.CONFIG_NOT_EXISTS;
  14 +import static cn.iocoder.dashboard.util.AssertUtils.assertPojoEquals;
  15 +import static cn.iocoder.dashboard.util.AssertUtils.assertServiceException;
  16 +import static cn.iocoder.dashboard.util.RandomUtils.randomLongId;
  17 +import static cn.iocoder.dashboard.util.RandomUtils.randomPojo;
  18 +import static org.junit.jupiter.api.Assertions.assertNotNull;
  19 +import static org.junit.jupiter.api.Assertions.assertNull;
  20 +
  21 +/**
  22 +* {@link InfConfigServiceImpl} 的单元测试类
  23 +*
  24 +* @author 芋艿
  25 +*/
  26 +public class InfConfigServiceTest extends BaseSpringBootUnitTest {
  27 +
  28 + @Resource
  29 + private InfConfigServiceImpl configService;
  30 +
  31 + @Resource
  32 + private InfConfigMapper configMapper;
  33 +
  34 + @Test
  35 + public void testCreateConfig_success() {
  36 + // 准备参数
  37 + InfConfigCreateReqVO reqVO = randomPojo(InfConfigCreateReqVO.class);
  38 +
  39 + // 调用
  40 + Long configId = configService.createConfig(reqVO);
  41 + // 断言
  42 + assertNotNull(configId);
  43 + // 校验记录的属性是否正确
  44 + InfConfigDO config = configMapper.selectById(configId);
  45 + assertPojoEquals(reqVO, config);
  46 + }
  47 +
  48 + @Test
  49 + public void testUpdateConfig_success() {
  50 + // mock 数据
  51 + InfConfigDO dbConfig = randomPojo(InfConfigDO.class);
  52 + configMapper.insert(dbConfig);// @Sql: 先插入出一条存在的数据
  53 + // 准备参数
  54 + InfConfigUpdateReqVO reqVO = randomPojo(InfConfigUpdateReqVO.class, o -> {
  55 + o.setId(dbConfig.getId()); // 设置更新的 ID
  56 + });
  57 +
  58 + // 调用
  59 + configService.updateConfig(reqVO);
  60 + // 校验是否更新正确
  61 + InfConfigDO config = configMapper.selectById(reqVO.getId()); // 获取最新的
  62 + assertPojoEquals(reqVO, config);
  63 + }
  64 +
  65 + @Test
  66 + public void testUpdateConfig_notExists() {
  67 + // 准备参数
  68 + InfConfigUpdateReqVO reqVO = randomPojo(InfConfigUpdateReqVO.class);
  69 +
  70 + // 调用, 并断言异常
  71 + assertServiceException(() -> configService.updateConfig(reqVO), CONFIG_NOT_EXISTS);
  72 + }
  73 +
  74 + @Test
  75 + public void testDeleteConfig_success() {
  76 + // mock 数据
  77 + InfConfigDO dbConfig = randomPojo(InfConfigDO.class);
  78 + configMapper.insert(dbConfig);// @Sql: 先插入出一条存在的数据
  79 + // 准备参数
  80 + Long id = dbConfig.getId();
  81 +
  82 + // 调用
  83 + configService.deleteConfig(id);
  84 + // 校验数据不存在了
  85 + assertNull(configMapper.selectById(id));
  86 + }
  87 +
  88 + @Test
  89 + public void testDeleteConfig_notExists() {
  90 + // 准备参数
  91 + Long id = randomLongId();
  92 +
  93 + // 调用, 并断言异常
  94 + assertServiceException(() -> configService.deleteConfig(id), CONFIG_NOT_EXISTS);
  95 + }
  96 +
  97 +}
... ...
src/test/java/cn/iocoder/dashboard/modules/system/service/auth/SysAuthServiceImplTest.java
... ... @@ -61,7 +61,7 @@ public class SysAuthServiceImplTest extends BaseSpringBootUnitTest {
61 61 @Test
62 62 public void testMockLogin_success() {
63 63 // 准备参数
64   - Long userId = randomLong();
  64 + Long userId = randomLongId();
65 65 // mock 方法 01
66 66 SysUserDO user = randomUserDO(o -> o.setId(userId));
67 67 when(userService.getUser(eq(userId))).thenReturn(user);
... ... @@ -80,7 +80,7 @@ public class SysAuthServiceImplTest extends BaseSpringBootUnitTest {
80 80 @Test
81 81 public void testMockLogin_userNotFound() {
82 82 // 准备参数
83   - Long userId = randomLong();
  83 + Long userId = randomLongId();
84 84 // mock 方法
85 85  
86 86 // 调用, 并断言异常
... ...
src/test/java/cn/iocoder/dashboard/util/RandomUtils.java
... ... @@ -46,7 +46,7 @@ public class RandomUtils {
46 46 return RandomUtil.randomString(RANDOM_STRING_LENGTH);
47 47 }
48 48  
49   - public static Long randomLong() {
  49 + public static Long randomLongId() {
50 50 return RandomUtil.randomLong(0, Long.MAX_VALUE);
51 51 }
52 52  
... ...