踩坑经历:反射时,$jacocoData的坑

556 阅读1分钟

起因

测试反馈测试环境导入excel,空数据依然会被导入,但是开发本地执行是正常的。

相关代码如下

public static boolean checkObjAllFieldsIsNull(Object object) {
  if (null == object) {
    return true;
  }
  try {
    for (Field field : object.getClass().getDeclaredFields()) {
      if (!Objects.equals("serialVersionUID", field.getName()))) {
        ReflectionUtils.makeAccessible(field);
        if (field.get(object) != null && StringUtils.isNotBlank(field.get(object).toString())) {
          return false;
        }
      }
    }
  } catch (Exception e) {
    log.error("判断字段属性为空异常", e);
  }
  return true;
}

通过反射字段,如果字段都为空,就过滤。 在测试环境 日志输出以后,发现打印出了一个boolean数组

Snipaste_2022-11-01_15-15-03.png

解决

测试okd容器集成了jacoco来统计单元测试的代码覆盖率,用反射就会射出这个$jacocoData,对应的只要在相关判断那里校验一下过滤掉jacocoData带来的影响就好了