serviceTest.vm 6.3 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161
  1. package ${basePackage}.modules.${table.moduleName}.service.${table.businessName};
  2. import ${basePackage}.BaseSpringBootUnitTest;
  3. import org.junit.jupiter.api.Test;
  4. import org.springframework.boot.test.mock.mockito.MockBean;
  5. import javax.annotation.Resource;
  6. import cn.iocoder.dashboard.BaseSpringBootUnitTest;
  7. import ${basePackage}.modules.${table.moduleName}.service.${table.businessName}.impl.${table.className}ServiceImpl;
  8. import ${basePackage}.modules.${table.moduleName}.controller.${table.businessName}.vo.*;
  9. import ${basePackage}.modules.${table.moduleName}.dal.dataobject.${table.businessName}.${table.className}DO;
  10. import ${basePackage}.modules.${table.moduleName}.dal.mysql.${table.businessName}.${table.className}Mapper;
  11. import ${basePackage}.util.object.ObjectUtils;
  12. import ${PageResultClassName};
  13. import javax.annotation.Resource;
  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. public class ${table.className}ServiceTest extends BaseSpringBootUnitTest {
  61. @Resource
  62. private ${table.className}ServiceImpl ${classNameVar}Service;
  63. @Resource
  64. private ${table.className}Mapper ${classNameVar}Mapper;
  65. @Test
  66. public void testCreate${simpleClassName}_success() {
  67. // 准备参数
  68. ${table.className}CreateReqVO reqVO = randomPojo(${table.className}CreateReqVO.class);
  69. // 调用
  70. Long ${classNameVar}Id = ${classNameVar}Service.create${simpleClassName}(reqVO);
  71. // 断言
  72. assertNotNull(${classNameVar}Id);
  73. // 校验记录的属性是否正确
  74. ${table.className}DO ${classNameVar} = ${classNameVar}Mapper.selectById(${classNameVar}Id);
  75. assertPojoEquals(reqVO, ${classNameVar});
  76. }
  77. @Test
  78. public void testUpdate${simpleClassName}_success() {
  79. // mock 数据
  80. ${table.className}DO db${simpleClassName} = randomPojo(${table.className}DO.class);
  81. ${classNameVar}Mapper.insert(db${simpleClassName});// @Sql: 先插入出一条存在的数据
  82. // 准备参数
  83. ${table.className}UpdateReqVO reqVO = randomPojo(${table.className}UpdateReqVO.class, o -> {
  84. o.setId(db${simpleClassName}.getId()); // 设置更新的 ID
  85. });
  86. // 调用
  87. ${classNameVar}Service.update${simpleClassName}(reqVO);
  88. // 校验是否更新正确
  89. ${table.className}DO ${classNameVar} = ${classNameVar}Mapper.selectById(reqVO.getId()); // 获取最新的
  90. assertPojoEquals(reqVO, ${classNameVar});
  91. }
  92. @Test
  93. public void testUpdate${simpleClassName}_notExists() {
  94. // 准备参数
  95. ${table.className}UpdateReqVO reqVO = randomPojo(${table.className}UpdateReqVO.class);
  96. // 调用, 并断言异常
  97. assertServiceException(() -> ${classNameVar}Service.update${simpleClassName}(reqVO), ${simpleClassName_underlineCase.toUpperCase()}_NOT_EXISTS);
  98. }
  99. @Test
  100. public void testDelete${simpleClassName}_success() {
  101. // mock 数据
  102. ${table.className}DO db${simpleClassName} = randomPojo(${table.className}DO.class);
  103. ${classNameVar}Mapper.insert(db${simpleClassName});// @Sql: 先插入出一条存在的数据
  104. // 准备参数
  105. Long id = db${simpleClassName}.getId();
  106. // 调用
  107. ${classNameVar}Service.delete${simpleClassName}(id);
  108. // 校验数据不存在了
  109. assertNull(${classNameVar}Mapper.selectById(id));
  110. }
  111. @Test
  112. public void testDelete${simpleClassName}_notExists() {
  113. // 准备参数
  114. Long id = randomLongId();
  115. // 调用, 并断言异常
  116. assertServiceException(() -> ${classNameVar}Service.delete${simpleClassName}(id), ${simpleClassName_underlineCase.toUpperCase()}_NOT_EXISTS);
  117. }
  118. @Test // TODO 请修改 null 为需要的值
  119. public void testGet${simpleClassName}Page() {
  120. #getPageCondition("PageReqVO")
  121. // 调用
  122. PageResult<${table.className}DO> pageResult = ${classNameVar}Service.get${simpleClassName}Page(reqVO);
  123. // 断言
  124. assertEquals(1, pageResult.getTotal());
  125. assertEquals(1, pageResult.getList().size());
  126. assertPojoEquals(db${simpleClassName}, pageResult.getList().get(0));
  127. }
  128. @Test // TODO 请修改 null 为需要的值
  129. public void testGet${simpleClassName}List() {
  130. #getPageCondition("ExportReqVO")
  131. // 调用
  132. List<${table.className}DO> list = ${classNameVar}Service.get${simpleClassName}List(reqVO);
  133. // 断言
  134. assertEquals(1, list.size());
  135. assertPojoEquals(db${simpleClassName}, list.get(0));
  136. }
  137. }