serviceTest.vm 6.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161
  1. package ${basePackage}.modules.${table.moduleName}.service.${table.businessName};
  2. import org.junit.jupiter.api.Test;
  3. import org.springframework.boot.test.mock.mockito.MockBean;
  4. import javax.annotation.Resource;
  5. import ${basePackage}.BaseDbUnitTest;
  6. import ${basePackage}.modules.${table.moduleName}.service.${table.businessName}.impl.${table.className}ServiceImpl;
  7. import ${basePackage}.modules.${table.moduleName}.controller.${table.businessName}.vo.*;
  8. import ${basePackage}.modules.${table.moduleName}.dal.dataobject.${table.businessName}.${table.className}DO;
  9. import ${basePackage}.modules.${table.moduleName}.dal.mysql.${table.businessName}.${table.className}Mapper;
  10. import ${basePackage}.util.object.ObjectUtils;
  11. import ${PageResultClassName};
  12. import javax.annotation.Resource;
  13. import org.springframework.context.annotation.Import;
  14. import java.util.*;
  15. import static cn.hutool.core.util.RandomUtil.*;
  16. import static ${basePackage}.modules.${table.moduleName}.enums.${simpleModuleName_upperFirst}ErrorCodeConstants.*;
  17. import static ${basePackage}.util.AssertUtils.*;
  18. import static ${basePackage}.util.RandomUtils.*;
  19. import static ${basePackage}.util.date.DateUtils.*;
  20. import static org.junit.jupiter.api.Assertions.*;
  21. import static org.mockito.Mockito.*;
  22. ## 字段模板
  23. #macro(getPageCondition $VO)
  24. // mock 数据
  25. ${table.className}DO db${simpleClassName} = randomPojo(${table.className}DO.class, o -> { // 等会查询到
  26. #foreach ($column in $columns)
  27. #if (${column.listOperation})
  28. #set ($JavaField = $column.javaField.substring(0,1).toUpperCase() + ${column.javaField.substring(1)})##首字母大写
  29. o.set$JavaField(null);
  30. #end
  31. #end
  32. });
  33. ${classNameVar}Mapper.insert(db${simpleClassName});
  34. #foreach ($column in $columns)
  35. #if (${column.listOperation})
  36. #set ($JavaField = $column.javaField.substring(0,1).toUpperCase() + ${column.javaField.substring(1)})##首字母大写
  37. // 测试 ${column.javaField} 不匹配
  38. ${classNameVar}Mapper.insert(ObjectUtils.clone(db${simpleClassName}, o -> o.set$JavaField(null)));
  39. #end
  40. #end
  41. // 准备参数
  42. ${table.className}${VO} reqVO = new ${table.className}${VO}();
  43. #foreach ($column in $columns)
  44. #if (${column.listOperation})
  45. #set ($JavaField = $column.javaField.substring(0,1).toUpperCase() + ${column.javaField.substring(1)})##首字母大写
  46. #if (${column.listOperationCondition} == "BETWEEN")## BETWEEN 的情况
  47. reqVO.setBegin${JavaField}(null);
  48. reqVO.setEnd${JavaField}(null);
  49. #else
  50. reqVO.set$JavaField(null);
  51. #end
  52. #end
  53. #end
  54. #end
  55. /**
  56. * {@link ${table.className}ServiceImpl} 的单元测试类
  57. *
  58. * @author ${table.author}
  59. */
  60. @Import(${table.className}ServiceImpl.class)
  61. public class ${table.className}ServiceTest extends BaseDbUnitTest {
  62. @Resource
  63. private ${table.className}ServiceImpl ${classNameVar}Service;
  64. @Resource
  65. private ${table.className}Mapper ${classNameVar}Mapper;
  66. @Test
  67. public void testCreate${simpleClassName}_success() {
  68. // 准备参数
  69. ${table.className}CreateReqVO reqVO = randomPojo(${table.className}CreateReqVO.class);
  70. // 调用
  71. ${primaryColumn.javaType} ${classNameVar}Id = ${classNameVar}Service.create${simpleClassName}(reqVO);
  72. // 断言
  73. assertNotNull(${classNameVar}Id);
  74. // 校验记录的属性是否正确
  75. ${table.className}DO ${classNameVar} = ${classNameVar}Mapper.selectById(${classNameVar}Id);
  76. assertPojoEquals(reqVO, ${classNameVar});
  77. }
  78. @Test
  79. public void testUpdate${simpleClassName}_success() {
  80. // mock 数据
  81. ${table.className}DO db${simpleClassName} = randomPojo(${table.className}DO.class);
  82. ${classNameVar}Mapper.insert(db${simpleClassName});// @Sql: 先插入出一条存在的数据
  83. // 准备参数
  84. ${table.className}UpdateReqVO reqVO = randomPojo(${table.className}UpdateReqVO.class, o -> {
  85. o.setId(db${simpleClassName}.getId()); // 设置更新的 ID
  86. });
  87. // 调用
  88. ${classNameVar}Service.update${simpleClassName}(reqVO);
  89. // 校验是否更新正确
  90. ${table.className}DO ${classNameVar} = ${classNameVar}Mapper.selectById(reqVO.getId()); // 获取最新的
  91. assertPojoEquals(reqVO, ${classNameVar});
  92. }
  93. @Test
  94. public void testUpdate${simpleClassName}_notExists() {
  95. // 准备参数
  96. ${table.className}UpdateReqVO reqVO = randomPojo(${table.className}UpdateReqVO.class);
  97. // 调用, 并断言异常
  98. assertServiceException(() -> ${classNameVar}Service.update${simpleClassName}(reqVO), ${simpleClassName_underlineCase.toUpperCase()}_NOT_EXISTS);
  99. }
  100. @Test
  101. public void testDelete${simpleClassName}_success() {
  102. // mock 数据
  103. ${table.className}DO db${simpleClassName} = randomPojo(${table.className}DO.class);
  104. ${classNameVar}Mapper.insert(db${simpleClassName});// @Sql: 先插入出一条存在的数据
  105. // 准备参数
  106. ${primaryColumn.javaType} id = db${simpleClassName}.getId();
  107. // 调用
  108. ${classNameVar}Service.delete${simpleClassName}(id);
  109. // 校验数据不存在了
  110. assertNull(${classNameVar}Mapper.selectById(id));
  111. }
  112. @Test
  113. public void testDelete${simpleClassName}_notExists() {
  114. // 准备参数
  115. ${primaryColumn.javaType} id = random${primaryColumn.javaType}Id();
  116. // 调用, 并断言异常
  117. assertServiceException(() -> ${classNameVar}Service.delete${simpleClassName}(id), ${simpleClassName_underlineCase.toUpperCase()}_NOT_EXISTS);
  118. }
  119. @Test // TODO 请修改 null 为需要的值
  120. public void testGet${simpleClassName}Page() {
  121. #getPageCondition("PageReqVO")
  122. // 调用
  123. PageResult<${table.className}DO> pageResult = ${classNameVar}Service.get${simpleClassName}Page(reqVO);
  124. // 断言
  125. assertEquals(1, pageResult.getTotal());
  126. assertEquals(1, pageResult.getList().size());
  127. assertPojoEquals(db${simpleClassName}, pageResult.getList().get(0));
  128. }
  129. @Test // TODO 请修改 null 为需要的值
  130. public void testGet${simpleClassName}List() {
  131. #getPageCondition("ExportReqVO")
  132. // 调用
  133. List<${table.className}DO> list = ${classNameVar}Service.get${simpleClassName}List(reqVO);
  134. // 断言
  135. assertEquals(1, list.size());
  136. assertPojoEquals(db${simpleClassName}, list.get(0));
  137. }
  138. }