mirror of
				https://gitee.com/hhyykk/ipms-sjy.git
				synced 2025-10-31 02:08:43 +08:00 
			
		
		
		
	1. 调整 codegen 的模板
2. 编写 ut 的代码生成器模板
This commit is contained in:
		| @@ -53,9 +53,7 @@ public class ToolCodegenEngine { | |||||||
|      * value:生成的路径 |      * value:生成的路径 | ||||||
|      */ |      */ | ||||||
|     private static final Map<String, String> TEMPLATES = MapUtil.<String, String>builder(new LinkedHashMap<>()) // 有序 |     private static final Map<String, String> TEMPLATES = MapUtil.<String, String>builder(new LinkedHashMap<>()) // 有序 | ||||||
|             // Java |             // Java Main | ||||||
|             .put(javaTemplatePath("controller/controller"), |  | ||||||
|                     javaFilePath("controller/${table.businessName}/${table.className}Controller")) |  | ||||||
|             .put(javaTemplatePath("controller/vo/baseVO"), |             .put(javaTemplatePath("controller/vo/baseVO"), | ||||||
|                     javaFilePath("controller/${table.businessName}/vo/${table.className}BaseVO")) |                     javaFilePath("controller/${table.businessName}/vo/${table.className}BaseVO")) | ||||||
|             .put(javaTemplatePath("controller/vo/createReqVO"), |             .put(javaTemplatePath("controller/vo/createReqVO"), | ||||||
| @@ -70,6 +68,8 @@ public class ToolCodegenEngine { | |||||||
|                     javaFilePath("controller/${table.businessName}/vo/${table.className}ExportReqVO")) |                     javaFilePath("controller/${table.businessName}/vo/${table.className}ExportReqVO")) | ||||||
|             .put(javaTemplatePath("controller/vo/excelVO"), |             .put(javaTemplatePath("controller/vo/excelVO"), | ||||||
|                     javaFilePath("controller/${table.businessName}/vo/${table.className}ExcelVO")) |                     javaFilePath("controller/${table.businessName}/vo/${table.className}ExcelVO")) | ||||||
|  |             .put(javaTemplatePath("controller/controller"), | ||||||
|  |                     javaFilePath("controller/${table.businessName}/${table.className}Controller")) | ||||||
|             .put(javaTemplatePath("convert/convert"), |             .put(javaTemplatePath("convert/convert"), | ||||||
|                     javaFilePath("convert/${table.businessName}/${table.className}Convert")) |                     javaFilePath("convert/${table.businessName}/${table.className}Convert")) | ||||||
|             .put(javaTemplatePath("dal/do"), |             .put(javaTemplatePath("dal/do"), | ||||||
| @@ -78,10 +78,13 @@ public class ToolCodegenEngine { | |||||||
|                     javaFilePath("dal/mysql/${table.businessName}/${table.className}Mapper")) |                     javaFilePath("dal/mysql/${table.businessName}/${table.className}Mapper")) | ||||||
|             .put(javaTemplatePath("enums/errorcode"), |             .put(javaTemplatePath("enums/errorcode"), | ||||||
|                     javaFilePath("enums/${simpleModuleName_upperFirst}ErrorCodeConstants")) |                     javaFilePath("enums/${simpleModuleName_upperFirst}ErrorCodeConstants")) | ||||||
|             .put(javaTemplatePath("service/service"), |  | ||||||
|                     javaFilePath("service/${table.businessName}/${table.className}Service")) |  | ||||||
|             .put(javaTemplatePath("service/serviceImpl"), |             .put(javaTemplatePath("service/serviceImpl"), | ||||||
|                     javaFilePath("service/${table.businessName}/impl/${table.className}ServiceImpl")) |                     javaFilePath("service/${table.businessName}/impl/${table.className}ServiceImpl")) | ||||||
|  |             .put(javaTemplatePath("service/service"), | ||||||
|  |                     javaFilePath("service/${table.businessName}/${table.className}Service")) | ||||||
|  |             // Java Test | ||||||
|  |             .put(javaTemplatePath("test/serviceTest"), | ||||||
|  |                     javaFilePath("service/${table.businessName}/${table.className}ServiceTest")) | ||||||
|             // Vue |             // Vue | ||||||
|             .put(vueTemplatePath("views/index.vue"), |             .put(vueTemplatePath("views/index.vue"), | ||||||
|                     vueFilePath("views/${table.moduleName}/${classNameVar}/index.vue")) |                     vueFilePath("views/${table.moduleName}/${classNameVar}/index.vue")) | ||||||
|   | |||||||
| @@ -154,7 +154,7 @@ yudao: | |||||||
|   file: |   file: | ||||||
|     base-path: http://127.0.0.1:${server.port}/${yudao.web.api-prefix}/file/get/ |     base-path: http://127.0.0.1:${server.port}/${yudao.web.api-prefix}/file/get/ | ||||||
|   codegen: |   codegen: | ||||||
|     base-package: ${yudao.info.base-package}.modules |     base-package: ${yudao.info.base-package} | ||||||
|     db-schemas: ${spring.datasource.name} |     db-schemas: ${spring.datasource.name} | ||||||
|   xss: |   xss: | ||||||
|     enable: false |     enable: false | ||||||
|   | |||||||
| @@ -154,7 +154,7 @@ yudao: | |||||||
|   file: |   file: | ||||||
|     base-path: http://127.0.0.1:${server.port}/${yudao.web.api-prefix}/file/get/ |     base-path: http://127.0.0.1:${server.port}/${yudao.web.api-prefix}/file/get/ | ||||||
|   codegen: |   codegen: | ||||||
|     base-package: ${yudao.info.base-package}.modules |     base-package: ${yudao.info.base-package} | ||||||
|     db-schemas: ${spring.datasource.name} |     db-schemas: ${spring.datasource.name} | ||||||
|   xss: |   xss: | ||||||
|     enable: false |     enable: false | ||||||
|   | |||||||
| @@ -1,4 +1,4 @@ | |||||||
| package ${basePackage}.${table.moduleName}.controller.${table.businessName}; | package ${basePackage}.modules.${table.moduleName}.controller.${table.businessName}; | ||||||
|  |  | ||||||
| import org.springframework.web.bind.annotation.*; | import org.springframework.web.bind.annotation.*; | ||||||
| import javax.annotation.Resource; | import javax.annotation.Resource; | ||||||
| @@ -22,10 +22,10 @@ import ${ExcelUtilsClassName}; | |||||||
| import ${OperateLogClassName}; | import ${OperateLogClassName}; | ||||||
| import static ${OperateTypeEnumClassName}.*; | import static ${OperateTypeEnumClassName}.*; | ||||||
|  |  | ||||||
| import ${basePackage}.${table.moduleName}.controller.${table.businessName}.vo.*; | import ${basePackage}.modules.${table.moduleName}.controller.${table.businessName}.vo.*; | ||||||
| import ${basePackage}.${table.moduleName}.dal.dataobject.${table.businessName}.${table.className}DO; | import ${basePackage}.modules.${table.moduleName}.dal.dataobject.${table.businessName}.${table.className}DO; | ||||||
| import ${basePackage}.${table.moduleName}.convert.${table.businessName}.${table.className}Convert; | import ${basePackage}.modules.${table.moduleName}.convert.${table.businessName}.${table.className}Convert; | ||||||
| import ${basePackage}.${table.moduleName}.service.${table.businessName}.${table.className}Service; | import ${basePackage}.modules.${table.moduleName}.service.${table.businessName}.${table.className}Service; | ||||||
|  |  | ||||||
| @Api(tags = "${table.classComment}") | @Api(tags = "${table.classComment}") | ||||||
| @RestController | @RestController | ||||||
|   | |||||||
| @@ -1,4 +1,4 @@ | |||||||
| package ${basePackage}.${table.moduleName}.controller.${table.businessName}.vo; | package ${basePackage}.modules.${table.moduleName}.controller.${table.businessName}.vo; | ||||||
|  |  | ||||||
| import lombok.*; | import lombok.*; | ||||||
| import java.util.*; | import java.util.*; | ||||||
|   | |||||||
| @@ -1,4 +1,4 @@ | |||||||
| package ${basePackage}.${table.moduleName}.controller.${table.businessName}.vo; | package ${basePackage}.modules.${table.moduleName}.controller.${table.businessName}.vo; | ||||||
|  |  | ||||||
| import lombok.*; | import lombok.*; | ||||||
| import java.util.*; | import java.util.*; | ||||||
|   | |||||||
| @@ -1,4 +1,4 @@ | |||||||
| package ${basePackage}.${table.moduleName}.controller.${table.businessName}.vo; | package ${basePackage}.modules.${table.moduleName}.controller.${table.businessName}.vo; | ||||||
|  |  | ||||||
| import lombok.*; | import lombok.*; | ||||||
| import java.util.*; | import java.util.*; | ||||||
|   | |||||||
| @@ -1,4 +1,4 @@ | |||||||
| package ${basePackage}.${table.moduleName}.controller.${table.businessName}.vo; | package ${basePackage}.modules.${table.moduleName}.controller.${table.businessName}.vo; | ||||||
|  |  | ||||||
| import lombok.*; | import lombok.*; | ||||||
| import java.util.*; | import java.util.*; | ||||||
|   | |||||||
| @@ -1,4 +1,4 @@ | |||||||
| package ${basePackage}.${table.moduleName}.controller.${table.businessName}.vo; | package ${basePackage}.modules.${table.moduleName}.controller.${table.businessName}.vo; | ||||||
|  |  | ||||||
| import lombok.*; | import lombok.*; | ||||||
| import java.util.*; | import java.util.*; | ||||||
|   | |||||||
| @@ -1,4 +1,4 @@ | |||||||
| package ${basePackage}.${table.moduleName}.controller.${table.businessName}.vo; | package ${basePackage}.modules.${table.moduleName}.controller.${table.businessName}.vo; | ||||||
|  |  | ||||||
| import lombok.*; | import lombok.*; | ||||||
| import java.util.*; | import java.util.*; | ||||||
|   | |||||||
| @@ -1,4 +1,4 @@ | |||||||
| package ${basePackage}.${table.moduleName}.controller.${table.businessName}.vo; | package ${basePackage}.modules.${table.moduleName}.controller.${table.businessName}.vo; | ||||||
|  |  | ||||||
| import lombok.*; | import lombok.*; | ||||||
| import java.util.*; | import java.util.*; | ||||||
|   | |||||||
| @@ -1,4 +1,4 @@ | |||||||
| package ${basePackage}.${table.moduleName}.convert.${table.businessName}; | package ${basePackage}.modules.${table.moduleName}.convert.${table.businessName}; | ||||||
|  |  | ||||||
| import java.util.*; | import java.util.*; | ||||||
|  |  | ||||||
| @@ -6,8 +6,8 @@ import ${PageResultClassName}; | |||||||
|  |  | ||||||
| import org.mapstruct.Mapper; | import org.mapstruct.Mapper; | ||||||
| import org.mapstruct.factory.Mappers; | import org.mapstruct.factory.Mappers; | ||||||
| import ${basePackage}.${table.moduleName}.controller.${table.businessName}.vo.*; | import ${basePackage}.modules.${table.moduleName}.controller.${table.businessName}.vo.*; | ||||||
| import ${basePackage}.${table.moduleName}.dal.dataobject.${table.businessName}.${table.className}DO; | import ${basePackage}.modules.${table.moduleName}.dal.dataobject.${table.businessName}.${table.className}DO; | ||||||
|  |  | ||||||
| /** | /** | ||||||
|  * ${table.classComment} Convert |  * ${table.classComment} Convert | ||||||
|   | |||||||
| @@ -1,4 +1,4 @@ | |||||||
| package ${basePackage}.${table.moduleName}.dal.dataobject.${table.businessName}; | package ${basePackage}.modules.${table.moduleName}.dal.dataobject.${table.businessName}; | ||||||
|  |  | ||||||
| import lombok.*; | import lombok.*; | ||||||
| import java.util.*; | import java.util.*; | ||||||
|   | |||||||
| @@ -1,13 +1,13 @@ | |||||||
| package ${basePackage}.${table.moduleName}.dal.mysql.${table.businessName}; | package ${basePackage}.modules.${table.moduleName}.dal.mysql.${table.businessName}; | ||||||
|  |  | ||||||
| import java.util.*; | import java.util.*; | ||||||
|  |  | ||||||
| import ${PageResultClassName}; | import ${PageResultClassName}; | ||||||
| import ${QueryWrapperClassName}; | import ${QueryWrapperClassName}; | ||||||
| import ${BaseMapperClassName}; | import ${BaseMapperClassName}; | ||||||
| import ${basePackage}.${table.moduleName}.dal.dataobject.${table.businessName}.${table.className}DO; | import ${basePackage}.modules.${table.moduleName}.dal.dataobject.${table.businessName}.${table.className}DO; | ||||||
| import org.apache.ibatis.annotations.Mapper; | import org.apache.ibatis.annotations.Mapper; | ||||||
| import ${basePackage}.${table.moduleName}.controller.${table.businessName}.vo.*; | import ${basePackage}.modules.${table.moduleName}.controller.${table.businessName}.vo.*; | ||||||
|  |  | ||||||
| ## 字段模板 | ## 字段模板 | ||||||
| #macro(listCondition) | #macro(listCondition) | ||||||
|   | |||||||
| @@ -1,9 +1,9 @@ | |||||||
| package ${basePackage}.${table.moduleName}.service.${table.businessName}; | package ${basePackage}.modules.${table.moduleName}.service.${table.businessName}; | ||||||
|  |  | ||||||
| import java.util.*; | import java.util.*; | ||||||
| import javax.validation.*; | import javax.validation.*; | ||||||
| import ${basePackage}.${table.moduleName}.controller.${table.businessName}.vo.*; | import ${basePackage}.modules.${table.moduleName}.controller.${table.businessName}.vo.*; | ||||||
| import ${basePackage}.${table.moduleName}.dal.dataobject.${table.businessName}.${table.className}DO; | import ${basePackage}.modules.${table.moduleName}.dal.dataobject.${table.businessName}.${table.className}DO; | ||||||
| import ${PageResultClassName}; | import ${PageResultClassName}; | ||||||
|  |  | ||||||
| /** | /** | ||||||
|   | |||||||
| @@ -1,4 +1,4 @@ | |||||||
| package ${basePackage}.${table.moduleName}.service.${table.businessName}.impl; | package ${basePackage}.modules.${table.moduleName}.service.${table.businessName}.impl; | ||||||
|  |  | ||||||
| import org.springframework.beans.factory.annotation.Autowired; | import org.springframework.beans.factory.annotation.Autowired; | ||||||
| import org.springframework.stereotype.Service; | import org.springframework.stereotype.Service; | ||||||
| @@ -6,17 +6,17 @@ import javax.annotation.Resource; | |||||||
| import org.springframework.validation.annotation.Validated; | import org.springframework.validation.annotation.Validated; | ||||||
|  |  | ||||||
| import java.util.*; | import java.util.*; | ||||||
| import ${basePackage}.${table.moduleName}.controller.${table.businessName}.vo.*; | import ${basePackage}.modules.${table.moduleName}.controller.${table.businessName}.vo.*; | ||||||
| import ${basePackage}.${table.moduleName}.dal.dataobject.${table.businessName}.${table.className}DO; | import ${basePackage}.modules.${table.moduleName}.dal.dataobject.${table.businessName}.${table.className}DO; | ||||||
| import ${PageResultClassName}; | import ${PageResultClassName}; | ||||||
|  |  | ||||||
| import ${basePackage}.${table.moduleName}.convert.${table.businessName}.${table.className}Convert; | import ${basePackage}.modules.${table.moduleName}.convert.${table.businessName}.${table.className}Convert; | ||||||
| import ${basePackage}.${table.moduleName}.dal.mysql.${table.businessName}.${table.className}Mapper; | import ${basePackage}.modules.${table.moduleName}.dal.mysql.${table.businessName}.${table.className}Mapper; | ||||||
| import ${basePackage}.${table.moduleName}.service.${table.businessName}.${table.className}Service; | import ${basePackage}.modules.${table.moduleName}.service.${table.businessName}.${table.className}Service; | ||||||
|  |  | ||||||
| import ${ServiceExceptionUtilClassName}; | import ${ServiceExceptionUtilClassName}; | ||||||
|  |  | ||||||
| import static ${basePackage}.${table.moduleName}.enums.${simpleModuleName_upperFirst}ErrorCodeConstants.*; | import static ${basePackage}.modules.${table.moduleName}.enums.${simpleModuleName_upperFirst}ErrorCodeConstants.*; | ||||||
|  |  | ||||||
| /** | /** | ||||||
|  * ${table.classComment} Service 实现类 |  * ${table.classComment} Service 实现类 | ||||||
|   | |||||||
							
								
								
									
										111
									
								
								src/main/resources/codegen/java/test/serviceTest.vm
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										111
									
								
								src/main/resources/codegen/java/test/serviceTest.vm
									
									
									
									
									
										Normal file
									
								
							| @@ -0,0 +1,111 @@ | |||||||
|  | package ${basePackage}.modules.${table.moduleName}.service.${table.businessName}; | ||||||
|  |  | ||||||
|  | import ${basePackage}.BaseSpringBootUnitTest; | ||||||
|  |  | ||||||
|  | import org.junit.jupiter.api.Test; | ||||||
|  | import org.springframework.boot.test.mock.mockito.MockBean; | ||||||
|  |  | ||||||
|  | import javax.annotation.Resource; | ||||||
|  |  | ||||||
|  | import cn.iocoder.dashboard.BaseSpringBootUnitTest; | ||||||
|  | import ${basePackage}.modules.${table.moduleName}.service.${table.businessName}.impl.${table.className}ServiceImpl; | ||||||
|  | import ${basePackage}.modules.${table.moduleName}.controller.${table.businessName}.vo.*; | ||||||
|  | import ${basePackage}.modules.${table.moduleName}.dal.dataobject.${table.businessName}.${table.className}DO; | ||||||
|  | import ${basePackage}.modules.${table.moduleName}.dal.mysql.${table.businessName}.${table.className}Mapper; | ||||||
|  |  | ||||||
|  | import javax.annotation.Resource; | ||||||
|  |  | ||||||
|  | import static cn.hutool.core.util.RandomUtil.*; | ||||||
|  | import static ${basePackage}.modules.${table.moduleName}.enums.${simpleModuleName_upperFirst}ErrorCodeConstants.*; | ||||||
|  | import static cn.iocoder.dashboard.util.AssertUtils.*; | ||||||
|  | import static cn.iocoder.dashboard.util.RandomUtils.*; | ||||||
|  | import static cn.iocoder.dashboard.util.date.DateUtils.*; | ||||||
|  | import static org.junit.jupiter.api.Assertions.*; | ||||||
|  | import static org.mockito.Mockito.*; | ||||||
|  |  | ||||||
|  | /** | ||||||
|  | * {@link ${table.className}ServiceImpl} 的单元测试类 | ||||||
|  | * | ||||||
|  | * @author ${table.author} | ||||||
|  | */ | ||||||
|  | public class ${table.className}ServiceTest extends BaseSpringBootUnitTest { | ||||||
|  |  | ||||||
|  |     @Resource | ||||||
|  |     private ${table.className}ServiceImpl ${classNameVar}Service; | ||||||
|  |  | ||||||
|  |     @Resource | ||||||
|  |     private ${table.className}Mapper ${classNameVar}Mapper; | ||||||
|  |  | ||||||
|  |     @Test | ||||||
|  |     public void testCreate${simpleClassName}_success() { | ||||||
|  |         // 准备参数 | ||||||
|  |         ${table.className}CreateReqVO reqVO = randomPojo(${table.className}CreateReqVO.class); | ||||||
|  |  | ||||||
|  |         // 调用 | ||||||
|  |         Long ${classNameVar}Id = ${classNameVar}Service.create${simpleClassName}(reqVO); | ||||||
|  |         // 断言 | ||||||
|  |         assertNotNull(${classNameVar}Id); | ||||||
|  |         // 校验记录的属性是否正确 | ||||||
|  |         ${table.className}DO ${classNameVar} = ${classNameVar}Mapper.selectById(${classNameVar}Id); | ||||||
|  |         assertPojoEquals(reqVO, ${classNameVar}); | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     @Test | ||||||
|  |     public void testUpdate${simpleClassName}_success() { | ||||||
|  |         // mock 数据 | ||||||
|  |         ${table.className}DO db${simpleClassName} = randomPojo(${table.className}DO.class); | ||||||
|  |         ${classNameVar}Mapper.insert(db${simpleClassName});// @Sql: 先插入出一条存在的数据 | ||||||
|  |         // 准备参数 | ||||||
|  |         ${table.className}UpdateReqVO reqVO = randomPojo(${table.className}UpdateReqVO.class, o -> { | ||||||
|  |             o.setId(db${simpleClassName}.getId()); // 设置更新的 ID | ||||||
|  |         }); | ||||||
|  |  | ||||||
|  |         // 调用 | ||||||
|  |         ${classNameVar}Service.update${simpleClassName}(reqVO); | ||||||
|  |         // 校验是否更新正确 | ||||||
|  |         ${table.className}DO ${classNameVar} = ${classNameVar}Mapper.selectById(reqVO.getId()); // 获取最新的 | ||||||
|  |         assertPojoEquals(reqVO, ${classNameVar}); | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     @Test | ||||||
|  |     public void testUpdate${simpleClassName}_notExists() { | ||||||
|  |         // 准备参数 | ||||||
|  |         ${table.className}UpdateReqVO reqVO = randomPojo(${table.className}UpdateReqVO.class); | ||||||
|  |  | ||||||
|  |         // 调用, 并断言异常 | ||||||
|  |         assertServiceException(() -> ${classNameVar}Service.update${simpleClassName}(reqVO), ${simpleClassName_underlineCase.toUpperCase()}_NOT_EXISTS); | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     @Test | ||||||
|  |     public void testDelete${simpleClassName}_success() { | ||||||
|  |         // mock 数据 | ||||||
|  |         ${table.className}DO db${simpleClassName} = randomPojo(${table.className}DO.class); | ||||||
|  |         ${classNameVar}Mapper.insert(db${simpleClassName});// @Sql: 先插入出一条存在的数据 | ||||||
|  |         // 准备参数 | ||||||
|  |         Long id = db${simpleClassName}.getId(); | ||||||
|  |  | ||||||
|  |         // 调用 | ||||||
|  |         ${classNameVar}Service.delete${simpleClassName}(id); | ||||||
|  |        // 校验数据不存在了 | ||||||
|  |        assertNull(configMapper.selectById(id)); | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     @Test | ||||||
|  |     public void testDelete${simpleClassName}_notExists() { | ||||||
|  |         // 准备参数 | ||||||
|  |         Long id = randomLongId(); | ||||||
|  |  | ||||||
|  |         // 调用, 并断言异常 | ||||||
|  |         assertServiceException(() -> ${classNameVar}Service.delete${simpleClassName}(id), ${simpleClassName_underlineCase.toUpperCase()}_NOT_EXISTS); | ||||||
|  |    } | ||||||
|  |  | ||||||
|  |     @Test | ||||||
|  |     public void testGet${simpleClassName}Page() { | ||||||
|  |         // mock 数据 | ||||||
|  |         ${table.className}DO db${simpleClassName} = randomPojo(${table.className}DO.class, o -> {); // 等会查询到 | ||||||
|  |  | ||||||
|  |         }); | ||||||
|  |         ${classNameVar}Mapper.insert(db${simpleClassName}); | ||||||
|  |     } | ||||||
|  |  | ||||||
|  | } | ||||||
| @@ -20,24 +20,26 @@ import javax.annotation.Resource; | |||||||
| import java.util.List; | import java.util.List; | ||||||
| import java.util.function.Consumer; | import java.util.function.Consumer; | ||||||
| 
 | 
 | ||||||
| import static cn.hutool.core.util.RandomUtil.randomEle; | import static cn.hutool.core.util.RandomUtil.*; | ||||||
| import static cn.iocoder.dashboard.modules.infra.enums.InfErrorCodeConstants.*; | import static cn.iocoder.dashboard.modules.infra.enums.InfErrorCodeConstants.*; | ||||||
| import static cn.iocoder.dashboard.util.AssertUtils.assertPojoEquals; | import static cn.iocoder.dashboard.util.AssertUtils.*; | ||||||
| import static cn.iocoder.dashboard.util.AssertUtils.assertServiceException; | import static cn.iocoder.dashboard.util.RandomUtils.*; | ||||||
| import static cn.iocoder.dashboard.util.RandomUtils.randomPojo; | import static cn.iocoder.dashboard.util.date.DateUtils.*; | ||||||
| import static cn.iocoder.dashboard.util.date.DateUtils.buildTime; |  | ||||||
| import static org.junit.jupiter.api.Assertions.*; | import static org.junit.jupiter.api.Assertions.*; | ||||||
| import static org.mockito.Mockito.times; | import static org.mockito.Mockito.*; | ||||||
| import static org.mockito.Mockito.verify; |  | ||||||
| 
 | 
 | ||||||
| public class InfConfigServiceImplTest extends BaseSpringBootUnitTest { | /** | ||||||
|  |  * {@link InfConfigServiceImpl} 的单元测试类 | ||||||
|  |  * | ||||||
|  |  * @author 芋道源码 | ||||||
|  |  */ | ||||||
|  | public class InfConfigServiceTest extends BaseSpringBootUnitTest { | ||||||
| 
 | 
 | ||||||
|     @Resource |     @Resource | ||||||
|     private InfConfigServiceImpl configService; |     private InfConfigServiceImpl configService; | ||||||
| 
 | 
 | ||||||
|     @Resource |     @Resource | ||||||
|     private InfConfigMapper configMapper; |     private InfConfigMapper configMapper; | ||||||
| 
 |  | ||||||
|     @MockBean |     @MockBean | ||||||
|     private InfConfigProducer configProducer; |     private InfConfigProducer configProducer; | ||||||
| 
 | 
 | ||||||
| @@ -213,6 +215,15 @@ public class InfConfigServiceImplTest extends BaseSpringBootUnitTest { | |||||||
|         assertServiceException(() -> configService.deleteConfig(id), CONFIG_CAN_NOT_DELETE_SYSTEM_TYPE); |         assertServiceException(() -> configService.deleteConfig(id), CONFIG_CAN_NOT_DELETE_SYSTEM_TYPE); | ||||||
|     } |     } | ||||||
| 
 | 
 | ||||||
|  |     @Test | ||||||
|  |     public void testDeleteConfig_notExists() { | ||||||
|  |         // 准备参数 | ||||||
|  |         Long id = randomLongId(); | ||||||
|  | 
 | ||||||
|  |         // 调用, 并断言异常 | ||||||
|  |         assertServiceException(() -> configService.deleteConfig(id), CONFIG_NOT_EXISTS); | ||||||
|  |     } | ||||||
|  | 
 | ||||||
|     // ========== 随机对象 ========== |     // ========== 随机对象 ========== | ||||||
| 
 | 
 | ||||||
|     @SafeVarargs |     @SafeVarargs | ||||||
| @@ -0,0 +1,97 @@ | |||||||
|  | package cn.iocoder.dashboard.modules.infra.service.job; | ||||||
|  |  | ||||||
|  | import cn.iocoder.dashboard.BaseSpringBootUnitTest; | ||||||
|  | import cn.iocoder.dashboard.modules.infra.controller.config.vo.InfConfigCreateReqVO; | ||||||
|  | import cn.iocoder.dashboard.modules.infra.controller.config.vo.InfConfigUpdateReqVO; | ||||||
|  | import cn.iocoder.dashboard.modules.infra.dal.dataobject.config.InfConfigDO; | ||||||
|  | import cn.iocoder.dashboard.modules.infra.dal.mysql.config.InfConfigMapper; | ||||||
|  | import cn.iocoder.dashboard.modules.infra.service.config.impl.InfConfigServiceImpl; | ||||||
|  | import org.junit.jupiter.api.Test; | ||||||
|  |  | ||||||
|  | import javax.annotation.Resource; | ||||||
|  |  | ||||||
|  | import static cn.iocoder.dashboard.modules.infra.enums.InfErrorCodeConstants.CONFIG_NOT_EXISTS; | ||||||
|  | import static cn.iocoder.dashboard.util.AssertUtils.assertPojoEquals; | ||||||
|  | import static cn.iocoder.dashboard.util.AssertUtils.assertServiceException; | ||||||
|  | import static cn.iocoder.dashboard.util.RandomUtils.randomLongId; | ||||||
|  | import static cn.iocoder.dashboard.util.RandomUtils.randomPojo; | ||||||
|  | import static org.junit.jupiter.api.Assertions.assertNotNull; | ||||||
|  | import static org.junit.jupiter.api.Assertions.assertNull; | ||||||
|  |  | ||||||
|  | /** | ||||||
|  | * {@link InfConfigServiceImpl} 的单元测试类 | ||||||
|  | * | ||||||
|  | * @author 芋艿 | ||||||
|  | */ | ||||||
|  | public class InfConfigServiceTest extends BaseSpringBootUnitTest { | ||||||
|  |  | ||||||
|  |     @Resource | ||||||
|  |     private InfConfigServiceImpl configService; | ||||||
|  |  | ||||||
|  |     @Resource | ||||||
|  |     private InfConfigMapper configMapper; | ||||||
|  |  | ||||||
|  |     @Test | ||||||
|  |     public void testCreateConfig_success() { | ||||||
|  |         // 准备参数 | ||||||
|  |         InfConfigCreateReqVO reqVO = randomPojo(InfConfigCreateReqVO.class); | ||||||
|  |  | ||||||
|  |         // 调用 | ||||||
|  |         Long configId = configService.createConfig(reqVO); | ||||||
|  |         // 断言 | ||||||
|  |         assertNotNull(configId); | ||||||
|  |         // 校验记录的属性是否正确 | ||||||
|  |         InfConfigDO config = configMapper.selectById(configId); | ||||||
|  |         assertPojoEquals(reqVO, config); | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     @Test | ||||||
|  |     public void testUpdateConfig_success() { | ||||||
|  |         // mock 数据 | ||||||
|  |         InfConfigDO dbConfig = randomPojo(InfConfigDO.class); | ||||||
|  |         configMapper.insert(dbConfig);// @Sql: 先插入出一条存在的数据 | ||||||
|  |         // 准备参数 | ||||||
|  |         InfConfigUpdateReqVO reqVO = randomPojo(InfConfigUpdateReqVO.class, o -> { | ||||||
|  |             o.setId(dbConfig.getId()); // 设置更新的 ID | ||||||
|  |         }); | ||||||
|  |  | ||||||
|  |         // 调用 | ||||||
|  |         configService.updateConfig(reqVO); | ||||||
|  |         // 校验是否更新正确 | ||||||
|  |         InfConfigDO config = configMapper.selectById(reqVO.getId()); // 获取最新的 | ||||||
|  |         assertPojoEquals(reqVO, config); | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     @Test | ||||||
|  |     public void testUpdateConfig_notExists() { | ||||||
|  |         // 准备参数 | ||||||
|  |         InfConfigUpdateReqVO reqVO = randomPojo(InfConfigUpdateReqVO.class); | ||||||
|  |  | ||||||
|  |         // 调用, 并断言异常 | ||||||
|  |         assertServiceException(() -> configService.updateConfig(reqVO), CONFIG_NOT_EXISTS); | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     @Test | ||||||
|  |     public void testDeleteConfig_success() { | ||||||
|  |         // mock 数据 | ||||||
|  |         InfConfigDO dbConfig = randomPojo(InfConfigDO.class); | ||||||
|  |         configMapper.insert(dbConfig);// @Sql: 先插入出一条存在的数据 | ||||||
|  |         // 准备参数 | ||||||
|  |         Long id = dbConfig.getId(); | ||||||
|  |  | ||||||
|  |         // 调用 | ||||||
|  |         configService.deleteConfig(id); | ||||||
|  |        // 校验数据不存在了 | ||||||
|  |        assertNull(configMapper.selectById(id)); | ||||||
|  |     } | ||||||
|  |  | ||||||
|  |     @Test | ||||||
|  |     public void testDeleteConfig_notExists() { | ||||||
|  |         // 准备参数 | ||||||
|  |         Long id = randomLongId(); | ||||||
|  |  | ||||||
|  |         // 调用, 并断言异常 | ||||||
|  |         assertServiceException(() -> configService.deleteConfig(id), CONFIG_NOT_EXISTS); | ||||||
|  |    } | ||||||
|  |  | ||||||
|  | } | ||||||
| @@ -61,7 +61,7 @@ public class SysAuthServiceImplTest extends BaseSpringBootUnitTest { | |||||||
|     @Test |     @Test | ||||||
|     public void testMockLogin_success() { |     public void testMockLogin_success() { | ||||||
|         // 准备参数 |         // 准备参数 | ||||||
|         Long userId = randomLong(); |         Long userId = randomLongId(); | ||||||
|         // mock 方法 01 |         // mock 方法 01 | ||||||
|         SysUserDO user = randomUserDO(o -> o.setId(userId)); |         SysUserDO user = randomUserDO(o -> o.setId(userId)); | ||||||
|         when(userService.getUser(eq(userId))).thenReturn(user); |         when(userService.getUser(eq(userId))).thenReturn(user); | ||||||
| @@ -80,7 +80,7 @@ public class SysAuthServiceImplTest extends BaseSpringBootUnitTest { | |||||||
|     @Test |     @Test | ||||||
|     public void testMockLogin_userNotFound() { |     public void testMockLogin_userNotFound() { | ||||||
|         // 准备参数 |         // 准备参数 | ||||||
|         Long userId = randomLong(); |         Long userId = randomLongId(); | ||||||
|         // mock 方法 |         // mock 方法 | ||||||
|  |  | ||||||
|         // 调用, 并断言异常 |         // 调用, 并断言异常 | ||||||
|   | |||||||
| @@ -46,7 +46,7 @@ public class RandomUtils { | |||||||
|         return RandomUtil.randomString(RANDOM_STRING_LENGTH); |         return RandomUtil.randomString(RANDOM_STRING_LENGTH); | ||||||
|     } |     } | ||||||
|  |  | ||||||
|     public static Long randomLong() { |     public static Long randomLongId() { | ||||||
|         return RandomUtil.randomLong(0, Long.MAX_VALUE); |         return RandomUtil.randomLong(0, Long.MAX_VALUE); | ||||||
|     } |     } | ||||||
|  |  | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user
	 YunaiV
					YunaiV