今天公司安排我写单元测试 因为要通过三级认证 公司要求是覆盖率必须达到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})