Commit 92997a0cd57d0c9bd5d77ab3ff165501c47ed945

Authored by YunaiV
1 parent e9f2e91f

开始编写 SysAuthServiceImpl 的单元测试

src/main/java/cn/iocoder/dashboard/modules/system/dal/dataobject/user/SysUserDO.java
... ... @@ -7,8 +7,7 @@ import cn.iocoder.dashboard.modules.system.enums.common.SysSexEnum;
7 7 import com.baomidou.mybatisplus.annotation.TableField;
8 8 import com.baomidou.mybatisplus.annotation.TableId;
9 9 import com.baomidou.mybatisplus.annotation.TableName;
10   -import lombok.Data;
11   -import lombok.EqualsAndHashCode;
  10 +import lombok.*;
12 11 import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
13 12  
14 13 import java.util.Date;
... ... @@ -22,6 +21,9 @@ import java.util.Set;
22 21 @TableName(value = "sys_user", autoResultMap = true)
23 22 @Data
24 23 @EqualsAndHashCode(callSuper = true)
  24 +@Builder
  25 +@NoArgsConstructor
  26 +@AllArgsConstructor
25 27 public class SysUserDO extends BaseDO {
26 28  
27 29 /**
... ...
src/test/java/cn/iocoder/dashboard/BaseSpringBootUnitTest.java
... ... @@ -9,7 +9,7 @@ import org.springframework.test.context.jdbc.Sql;
9 9  
10 10 import javax.annotation.Resource;
11 11  
12   -@SpringBootTest
  12 +@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.NONE)
13 13 @ActiveProfiles("unit-test") // 设置使用 application-unit-test 配置文件
14 14 @Sql(scripts = "/sql/clean.sql", executionPhase = Sql.ExecutionPhase.AFTER_TEST_METHOD) // 每个单元测试结束后,清理 DB
15 15 public class BaseSpringBootUnitTest {
... ...
src/test/java/cn/iocoder/dashboard/config/RedisTestConfiguration.java
... ... @@ -18,14 +18,6 @@ import java.io.IOException;
18 18 @AutoConfigureBefore({RedisAutoConfiguration.class, RedissonAutoConfiguration.class}) // 在 Redis 自动配置前,进行初始化
19 19 public class RedisTestConfiguration {
20 20  
21   -// /**
22   -// * 创建模拟的 Redis Server 服务器
23   -// */
24   -// @Bean(initMethod = "start", destroyMethod = "stop")
25   -// public RedisServer redisServer(RedisProperties properties) throws IOException {
26   -// return new RedisServer(properties.getPort());
27   -// }
28   -
29 21 /**
30 22 * 创建模拟的 Redis Server 服务器
31 23 */
... ...
src/test/java/cn/iocoder/dashboard/modules/system/service/auth/SysAuthServiceImplTest.java 0 → 100644
  1 +package cn.iocoder.dashboard.modules.system.service.auth;
  2 +
  3 +import cn.iocoder.dashboard.BaseSpringBootUnitTest;
  4 +import cn.iocoder.dashboard.modules.system.dal.dataobject.user.SysUserDO;
  5 +import cn.iocoder.dashboard.modules.system.service.auth.impl.SysAuthServiceImpl;
  6 +import cn.iocoder.dashboard.modules.system.service.user.SysUserService;
  7 +import org.junit.jupiter.api.Test;
  8 +import org.springframework.boot.test.mock.mockito.MockBean;
  9 +
  10 +import javax.annotation.Resource;
  11 +
  12 +import static cn.iocoder.dashboard.util.RandomUtils.*;
  13 +import static org.mockito.ArgumentMatchers.eq;
  14 +import static org.mockito.Mockito.when;
  15 +
  16 +public class SysAuthServiceImplTest extends BaseSpringBootUnitTest {
  17 +
  18 + @Resource
  19 + private SysAuthServiceImpl authService;
  20 +
  21 + @MockBean
  22 + private SysUserService userService;
  23 +
  24 + @Test
  25 + public void testLoadUserByUsername_success() {
  26 + // 准备参数
  27 + String username = randomString();
  28 + // mock 方法
  29 + SysUserDO user = randomUserDO();
  30 + when(userService.getUserByUserName(eq(username))).thenReturn(user);
  31 + }
  32 +
  33 +}
... ...
src/test/java/cn/iocoder/dashboard/modules/system/service/package-info.java 0 → 100644
  1 +package cn.iocoder.dashboard.modules.system.service;
... ...
src/test/java/cn/iocoder/dashboard/util/RandomUtils.java 0 → 100644
  1 +package cn.iocoder.dashboard.util;
  2 +
  3 +import cn.hutool.core.util.*;
  4 +import cn.iocoder.dashboard.modules.system.dal.dataobject.user.SysUserDO;
  5 +
  6 +import java.lang.reflect.Field;
  7 +
  8 +/**
  9 + * 随机工具类
  10 + *
  11 + * @author 芋道源码
  12 + */
  13 +public class RandomUtils {
  14 +
  15 + private static final int RANDOM_STRING_LENGTH = 10;
  16 +
  17 + public static String randomString() {
  18 + return RandomUtil.randomString(RANDOM_STRING_LENGTH);
  19 + }
  20 +
  21 + public static Long randomLong() {
  22 + return RandomUtil.randomLong(0, Long.MAX_VALUE);
  23 + }
  24 +
  25 + public static Integer randomInteger() {
  26 + return RandomUtil.randomInt(0, Integer.MAX_VALUE);
  27 + }
  28 +
  29 + public static Short randomShort() {
  30 + return (short) RandomUtil.randomInt(0, Short.MAX_VALUE);
  31 + }
  32 +
  33 + public static SysUserDO randomUserDO() {
  34 + SysUserDO user = randomObject(SysUserDO.class);
  35 + return user;
  36 + }
  37 +
  38 + private static <T> T randomObject(Class<T> clazz) {
  39 + // 创建对象
  40 + T object = ReflectUtil.newInstance(clazz);
  41 + // 遍历属性,设置随机值
  42 + for (Field field : ReflectUtil.getFields(clazz)) {
  43 + // 数字类型
  44 + if (field.getType() == Long.class) {
  45 + ReflectUtil.setFieldValue(object, field, randomLong());
  46 + continue;
  47 + }
  48 + if (field.getType() == Integer.class) {
  49 + ReflectUtil.setFieldValue(object, field, randomInteger());
  50 + continue;
  51 + }
  52 + if (field.getType() == Short.class) {
  53 + ReflectUtil.setFieldValue(object, field, randomShort());
  54 + continue;
  55 + }
  56 + // 字符串类型
  57 + if (field.getType() == String.class) {
  58 + ReflectUtil.setFieldValue(object, field, randomString());
  59 + continue;
  60 + }
  61 +// System.out.println();
  62 + }
  63 + return object;
  64 + }
  65 +
  66 +}
... ...