mockito+junit 单元测试 测试私有方法利用反射去调用提升覆盖率 反射调用时传入参数为 null

今天公司安排我写单元测试 因为要通过三级认证 公司要求是覆盖率必须达到100%
而在写单元测试的时候 对于是否要测试私有方法一直是一个争议 公司规范 对私有方法也进行测试

代码如下:

  private void postGpInfo(GpAlertInfoDO gpAlertInfoDO) {
        if (JudgeUtils.isNull(gpAlertInfoDO)) {
            BusinessException.throwBusinessException(ZB_SYS_ERROR);
        }
        GpZbAlertInfoBO alerInfo = new GpZbAlertInfoBO();
   }

JudgeUtils 是公司封装的一个工具类 让我们看看 isNull 方法的内部

代码如下:

 public static <T> boolean isNull(T t) {
        return null == t;
    }

我现在需要使得 if 条件成立返回 true 提高覆盖率
在这种情况下 如何保证 isNull 方法的返回值为 true
解决方案 :可以进行打桩 或者让传入的参数为 null

前面说到了 公司要求对私有方法也进行测试 我的处理是通过反射进行一个调用 达到预期效果

代码如下:

	ReflectionTestUtils.invokeMethod();

那怎么传 null 百度了一番之后发现没有人这样做过,可能因为这样做太过于奇葩。但是没办法现在就是要实现。于是在博主的各种实验下,终于发现了如下的放法可以传一个null的参数进去

传入 参数为 new Object[]{null} 即可

代码如下

ReflectionTestUtils.invokeMethod(gpAlertInfoServiceImpl,"postGpInfo",new Object[]{null})
  • 2
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值