55 lines
1.8 KiB
Java
55 lines
1.8 KiB
Java
|
package cn.iocoder.dashboard.util;
|
|||
|
|
|||
|
import cn.hutool.core.util.ReflectUtil;
|
|||
|
import cn.iocoder.dashboard.common.exception.ErrorCode;
|
|||
|
import cn.iocoder.dashboard.common.exception.ServiceException;
|
|||
|
import org.junit.jupiter.api.Assertions;
|
|||
|
|
|||
|
import java.lang.reflect.Field;
|
|||
|
import java.util.Arrays;
|
|||
|
|
|||
|
/**
|
|||
|
* 单元测试,assert 断言工具类
|
|||
|
*
|
|||
|
* @author 芋道源码
|
|||
|
*/
|
|||
|
public class AssertUtils {
|
|||
|
|
|||
|
/**
|
|||
|
* 比对两个对象的属性是否一致
|
|||
|
*
|
|||
|
* 注意,如果 expected 存在的属性,actual 不存在的时候,会进行忽略
|
|||
|
*
|
|||
|
* @param expected 期望对象
|
|||
|
* @param actual 实际对象
|
|||
|
*/
|
|||
|
public static void assertEquals(Object expected, Object actual) {
|
|||
|
Field[] expectedFields = ReflectUtil.getFields(expected.getClass());
|
|||
|
Arrays.stream(expectedFields).forEach(expectedField -> {
|
|||
|
// 忽略不存在的属性
|
|||
|
Field actualField = ReflectUtil.getField(actual.getClass(), expectedField.getName());
|
|||
|
if (actualField == null) {
|
|||
|
return;
|
|||
|
}
|
|||
|
// 比对
|
|||
|
Assertions.assertEquals(
|
|||
|
ReflectUtil.getFieldValue(expected, expectedField),
|
|||
|
ReflectUtil.getFieldValue(actual, actualField),
|
|||
|
String.format("Field(%s) 不匹配", expectedField.getName())
|
|||
|
);
|
|||
|
});
|
|||
|
}
|
|||
|
|
|||
|
/**
|
|||
|
* 比对抛出的 ServiceException 是否匹配
|
|||
|
*
|
|||
|
* @param errorCode 错误码对象
|
|||
|
* @param serviceException 业务异常
|
|||
|
*/
|
|||
|
public static void assertEquals(ErrorCode errorCode, ServiceException serviceException) {
|
|||
|
Assertions.assertEquals(errorCode.getCode(), serviceException.getCode(), "错误码不匹配");
|
|||
|
Assertions.assertEquals(errorCode.getMessage(), serviceException.getMessage(), "错误提示不匹配");
|
|||
|
}
|
|||
|
|
|||
|
}
|