123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161 |
- package ${basePackage}.modules.${table.moduleName}.service.${table.businessName};
- import org.junit.jupiter.api.Test;
- import org.springframework.boot.test.mock.mockito.MockBean;
- import javax.annotation.Resource;
- import ${basePackage}.BaseDbUnitTest;
- 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 ${basePackage}.util.object.ObjectUtils;
- import ${PageResultClassName};
- import javax.annotation.Resource;
- import org.springframework.context.annotation.Import;
- import java.util.*;
- import static cn.hutool.core.util.RandomUtil.*;
- import static ${basePackage}.modules.${table.moduleName}.enums.${simpleModuleName_upperFirst}ErrorCodeConstants.*;
- import static ${basePackage}.util.AssertUtils.*;
- import static ${basePackage}.util.RandomUtils.*;
- import static ${basePackage}.util.date.DateUtils.*;
- import static org.junit.jupiter.api.Assertions.*;
- import static org.mockito.Mockito.*;
- ## 字段模板
- #macro(getPageCondition $VO)
- // mock 数据
- ${table.className}DO db${simpleClassName} = randomPojo(${table.className}DO.class, o -> { // 等会查询到
- #foreach ($column in $columns)
- #if (${column.listOperation})
- #set ($JavaField = $column.javaField.substring(0,1).toUpperCase() + ${column.javaField.substring(1)})##首字母大写
- o.set$JavaField(null);
- #end
- #end
- });
- ${classNameVar}Mapper.insert(db${simpleClassName});
- #foreach ($column in $columns)
- #if (${column.listOperation})
- #set ($JavaField = $column.javaField.substring(0,1).toUpperCase() + ${column.javaField.substring(1)})##首字母大写
- // 测试 ${column.javaField} 不匹配
- ${classNameVar}Mapper.insert(ObjectUtils.clone(db${simpleClassName}, o -> o.set$JavaField(null)));
- #end
- #end
- // 准备参数
- ${table.className}${VO} reqVO = new ${table.className}${VO}();
- #foreach ($column in $columns)
- #if (${column.listOperation})
- #set ($JavaField = $column.javaField.substring(0,1).toUpperCase() + ${column.javaField.substring(1)})##首字母大写
- #if (${column.listOperationCondition} == "BETWEEN")## BETWEEN 的情况
- reqVO.setBegin${JavaField}(null);
- reqVO.setEnd${JavaField}(null);
- #else
- reqVO.set$JavaField(null);
- #end
- #end
- #end
- #end
- /**
- * {@link ${table.className}ServiceImpl} 的单元测试类
- *
- * @author ${table.author}
- */
- @Import(${table.className}ServiceImpl.class)
- public class ${table.className}ServiceTest extends BaseDbUnitTest {
- @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);
- // 调用
- ${primaryColumn.javaType} ${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: 先插入出一条存在的数据
- // 准备参数
- ${primaryColumn.javaType} id = db${simpleClassName}.getId();
- // 调用
- ${classNameVar}Service.delete${simpleClassName}(id);
- // 校验数据不存在了
- assertNull(${classNameVar}Mapper.selectById(id));
- }
- @Test
- public void testDelete${simpleClassName}_notExists() {
- // 准备参数
- ${primaryColumn.javaType} id = random${primaryColumn.javaType}Id();
- // 调用, 并断言异常
- assertServiceException(() -> ${classNameVar}Service.delete${simpleClassName}(id), ${simpleClassName_underlineCase.toUpperCase()}_NOT_EXISTS);
- }
- @Test // TODO 请修改 null 为需要的值
- public void testGet${simpleClassName}Page() {
- #getPageCondition("PageReqVO")
- // 调用
- PageResult<${table.className}DO> pageResult = ${classNameVar}Service.get${simpleClassName}Page(reqVO);
- // 断言
- assertEquals(1, pageResult.getTotal());
- assertEquals(1, pageResult.getList().size());
- assertPojoEquals(db${simpleClassName}, pageResult.getList().get(0));
- }
- @Test // TODO 请修改 null 为需要的值
- public void testGet${simpleClassName}List() {
- #getPageCondition("ExportReqVO")
- // 调用
- List<${table.className}DO> list = ${classNameVar}Service.get${simpleClassName}List(reqVO);
- // 断言
- assertEquals(1, list.size());
- assertPojoEquals(db${simpleClassName}, list.get(0));
- }
- }
|