AssertUtils.java 1.8 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354
  1. package cn.iocoder.dashboard.util;
  2. import cn.hutool.core.util.ReflectUtil;
  3. import cn.iocoder.dashboard.common.exception.ErrorCode;
  4. import cn.iocoder.dashboard.common.exception.ServiceException;
  5. import org.junit.jupiter.api.Assertions;
  6. import java.lang.reflect.Field;
  7. import java.util.Arrays;
  8. /**
  9. * 单元测试,assert 断言工具类
  10. *
  11. * @author 芋道源码
  12. */
  13. public class AssertUtils {
  14. /**
  15. * 比对两个对象的属性是否一致
  16. *
  17. * 注意,如果 expected 存在的属性,actual 不存在的时候,会进行忽略
  18. *
  19. * @param expected 期望对象
  20. * @param actual 实际对象
  21. */
  22. public static void assertEquals(Object expected, Object actual) {
  23. Field[] expectedFields = ReflectUtil.getFields(expected.getClass());
  24. Arrays.stream(expectedFields).forEach(expectedField -> {
  25. // 忽略不存在的属性
  26. Field actualField = ReflectUtil.getField(actual.getClass(), expectedField.getName());
  27. if (actualField == null) {
  28. return;
  29. }
  30. // 比对
  31. Assertions.assertEquals(
  32. ReflectUtil.getFieldValue(expected, expectedField),
  33. ReflectUtil.getFieldValue(actual, actualField),
  34. String.format("Field(%s) 不匹配", expectedField.getName())
  35. );
  36. });
  37. }
  38. /**
  39. * 比对抛出的 ServiceException 是否匹配
  40. *
  41. * @param errorCode 错误码对象
  42. * @param serviceException 业务异常
  43. */
  44. public static void assertEquals(ErrorCode errorCode, ServiceException serviceException) {
  45. Assertions.assertEquals(errorCode.getCode(), serviceException.getCode(), "错误码不匹配");
  46. Assertions.assertEquals(errorCode.getMessage(), serviceException.getMessage(), "错误提示不匹配");
  47. }
  48. }