mirror of
				https://gitee.com/hhyykk/ipms-sjy.git
				synced 2025-11-04 20:28:44 +08:00 
			
		
		
		
	开始编写 SysAuthServiceImpl 的单元测试
This commit is contained in:
		@@ -7,8 +7,7 @@ import cn.iocoder.dashboard.modules.system.enums.common.SysSexEnum;
 | 
				
			|||||||
import com.baomidou.mybatisplus.annotation.TableField;
 | 
					import com.baomidou.mybatisplus.annotation.TableField;
 | 
				
			||||||
import com.baomidou.mybatisplus.annotation.TableId;
 | 
					import com.baomidou.mybatisplus.annotation.TableId;
 | 
				
			||||||
import com.baomidou.mybatisplus.annotation.TableName;
 | 
					import com.baomidou.mybatisplus.annotation.TableName;
 | 
				
			||||||
import lombok.Data;
 | 
					import lombok.*;
 | 
				
			||||||
import lombok.EqualsAndHashCode;
 | 
					 | 
				
			||||||
import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
 | 
					import org.springframework.security.crypto.bcrypt.BCryptPasswordEncoder;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import java.util.Date;
 | 
					import java.util.Date;
 | 
				
			||||||
@@ -22,6 +21,9 @@ import java.util.Set;
 | 
				
			|||||||
@TableName(value = "sys_user", autoResultMap = true)
 | 
					@TableName(value = "sys_user", autoResultMap = true)
 | 
				
			||||||
@Data
 | 
					@Data
 | 
				
			||||||
@EqualsAndHashCode(callSuper = true)
 | 
					@EqualsAndHashCode(callSuper = true)
 | 
				
			||||||
 | 
					@Builder
 | 
				
			||||||
 | 
					@NoArgsConstructor
 | 
				
			||||||
 | 
					@AllArgsConstructor
 | 
				
			||||||
public class SysUserDO extends BaseDO {
 | 
					public class SysUserDO extends BaseDO {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    /**
 | 
					    /**
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -9,7 +9,7 @@ import org.springframework.test.context.jdbc.Sql;
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
import javax.annotation.Resource;
 | 
					import javax.annotation.Resource;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@SpringBootTest
 | 
					@SpringBootTest(webEnvironment = SpringBootTest.WebEnvironment.NONE)
 | 
				
			||||||
@ActiveProfiles("unit-test") // 设置使用 application-unit-test 配置文件
 | 
					@ActiveProfiles("unit-test") // 设置使用 application-unit-test 配置文件
 | 
				
			||||||
@Sql(scripts = "/sql/clean.sql", executionPhase = Sql.ExecutionPhase.AFTER_TEST_METHOD) // 每个单元测试结束后,清理 DB
 | 
					@Sql(scripts = "/sql/clean.sql", executionPhase = Sql.ExecutionPhase.AFTER_TEST_METHOD) // 每个单元测试结束后,清理 DB
 | 
				
			||||||
public class BaseSpringBootUnitTest {
 | 
					public class BaseSpringBootUnitTest {
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -18,14 +18,6 @@ import java.io.IOException;
 | 
				
			|||||||
@AutoConfigureBefore({RedisAutoConfiguration.class, RedissonAutoConfiguration.class}) // 在 Redis 自动配置前,进行初始化
 | 
					@AutoConfigureBefore({RedisAutoConfiguration.class, RedissonAutoConfiguration.class}) // 在 Redis 自动配置前,进行初始化
 | 
				
			||||||
public class RedisTestConfiguration {
 | 
					public class RedisTestConfiguration {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
//    /**
 | 
					 | 
				
			||||||
//     * 创建模拟的 Redis Server 服务器
 | 
					 | 
				
			||||||
//     */
 | 
					 | 
				
			||||||
//    @Bean(initMethod = "start", destroyMethod = "stop")
 | 
					 | 
				
			||||||
//    public RedisServer redisServer(RedisProperties properties) throws IOException {
 | 
					 | 
				
			||||||
//        return new RedisServer(properties.getPort());
 | 
					 | 
				
			||||||
//    }
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
    /**
 | 
					    /**
 | 
				
			||||||
     * 创建模拟的 Redis Server 服务器
 | 
					     * 创建模拟的 Redis Server 服务器
 | 
				
			||||||
     */
 | 
					     */
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -0,0 +1,33 @@
 | 
				
			|||||||
 | 
					package cn.iocoder.dashboard.modules.system.service.auth;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import cn.iocoder.dashboard.BaseSpringBootUnitTest;
 | 
				
			||||||
 | 
					import cn.iocoder.dashboard.modules.system.dal.dataobject.user.SysUserDO;
 | 
				
			||||||
 | 
					import cn.iocoder.dashboard.modules.system.service.auth.impl.SysAuthServiceImpl;
 | 
				
			||||||
 | 
					import cn.iocoder.dashboard.modules.system.service.user.SysUserService;
 | 
				
			||||||
 | 
					import org.junit.jupiter.api.Test;
 | 
				
			||||||
 | 
					import org.springframework.boot.test.mock.mockito.MockBean;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import javax.annotation.Resource;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import static cn.iocoder.dashboard.util.RandomUtils.*;
 | 
				
			||||||
 | 
					import static org.mockito.ArgumentMatchers.eq;
 | 
				
			||||||
 | 
					import static org.mockito.Mockito.when;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					public class SysAuthServiceImplTest extends BaseSpringBootUnitTest {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    @Resource
 | 
				
			||||||
 | 
					    private SysAuthServiceImpl authService;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    @MockBean
 | 
				
			||||||
 | 
					    private SysUserService userService;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    @Test
 | 
				
			||||||
 | 
					    public void testLoadUserByUsername_success() {
 | 
				
			||||||
 | 
					        // 准备参数
 | 
				
			||||||
 | 
					        String username = randomString();
 | 
				
			||||||
 | 
					        // mock 方法
 | 
				
			||||||
 | 
					        SysUserDO user = randomUserDO();
 | 
				
			||||||
 | 
					        when(userService.getUserByUserName(eq(username))).thenReturn(user);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
@@ -0,0 +1 @@
 | 
				
			|||||||
 | 
					package cn.iocoder.dashboard.modules.system.service;
 | 
				
			||||||
							
								
								
									
										66
									
								
								src/test/java/cn/iocoder/dashboard/util/RandomUtils.java
									
									
									
									
									
										Normal file
									
								
							
							
						
						
									
										66
									
								
								src/test/java/cn/iocoder/dashboard/util/RandomUtils.java
									
									
									
									
									
										Normal file
									
								
							@@ -0,0 +1,66 @@
 | 
				
			|||||||
 | 
					package cn.iocoder.dashboard.util;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import cn.hutool.core.util.*;
 | 
				
			||||||
 | 
					import cn.iocoder.dashboard.modules.system.dal.dataobject.user.SysUserDO;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import java.lang.reflect.Field;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					/**
 | 
				
			||||||
 | 
					 * 随机工具类
 | 
				
			||||||
 | 
					 *
 | 
				
			||||||
 | 
					 * @author 芋道源码
 | 
				
			||||||
 | 
					 */
 | 
				
			||||||
 | 
					public class RandomUtils {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    private static final int RANDOM_STRING_LENGTH = 10;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public static String randomString() {
 | 
				
			||||||
 | 
					        return RandomUtil.randomString(RANDOM_STRING_LENGTH);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public static Long randomLong() {
 | 
				
			||||||
 | 
					        return RandomUtil.randomLong(0, Long.MAX_VALUE);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public static Integer randomInteger() {
 | 
				
			||||||
 | 
					        return RandomUtil.randomInt(0, Integer.MAX_VALUE);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public static Short randomShort() {
 | 
				
			||||||
 | 
					        return (short) RandomUtil.randomInt(0, Short.MAX_VALUE);
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    public static SysUserDO randomUserDO() {
 | 
				
			||||||
 | 
					        SysUserDO user = randomObject(SysUserDO.class);
 | 
				
			||||||
 | 
					        return user;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    private static <T> T randomObject(Class<T> clazz) {
 | 
				
			||||||
 | 
					        // 创建对象
 | 
				
			||||||
 | 
					        T object = ReflectUtil.newInstance(clazz);
 | 
				
			||||||
 | 
					        // 遍历属性,设置随机值
 | 
				
			||||||
 | 
					        for (Field field : ReflectUtil.getFields(clazz)) {
 | 
				
			||||||
 | 
					            // 数字类型
 | 
				
			||||||
 | 
					            if (field.getType() == Long.class) {
 | 
				
			||||||
 | 
					                ReflectUtil.setFieldValue(object, field, randomLong());
 | 
				
			||||||
 | 
					                continue;
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					            if (field.getType() == Integer.class) {
 | 
				
			||||||
 | 
					                ReflectUtil.setFieldValue(object, field, randomInteger());
 | 
				
			||||||
 | 
					                continue;
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					            if (field.getType() == Short.class) {
 | 
				
			||||||
 | 
					                ReflectUtil.setFieldValue(object, field, randomShort());
 | 
				
			||||||
 | 
					                continue;
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					            // 字符串类型
 | 
				
			||||||
 | 
					            if (field.getType() == String.class) {
 | 
				
			||||||
 | 
					                ReflectUtil.setFieldValue(object, field, randomString());
 | 
				
			||||||
 | 
					                continue;
 | 
				
			||||||
 | 
					            }
 | 
				
			||||||
 | 
					//            System.out.println();
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					        return object;
 | 
				
			||||||
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					}
 | 
				
			||||||
		Reference in New Issue
	
	Block a user