今天公司安排我寫單元測試 因為要通過三級認(rèn)證 公司要求是覆蓋率必須達(dá)到100%
而在寫單元測試的時候 對于是否要測試私有方法一直是一個爭議 公司規(guī)范 對私有方法也進(jìn)行測試
代碼如下:
private void postGpInfo(GpAlertInfoDO gpAlertInfoDO) {
if (JudgeUtils.isNull(gpAlertInfoDO)) {
BusinessException.throwBusinessException(ZB_SYS_ERROR);
}
GpZbAlertInfoBO alerInfo = new GpZbAlertInfoBO();
}
JudgeUtils 是公司封裝的一個工具類 讓我們看看 isNull 方法的內(nèi)部
代碼如下:
public static <T> boolean isNull(T t) {
return null == t;
}
我現(xiàn)在需要使得 if 條件成立返回 true 提高覆蓋率
在這種情況下 如何保證 isNull 方法的返回值為 true
解決方案 :可以進(jìn)行打樁 或者讓傳入的參數(shù)為 null
前面說到了 公司要求對私有方法也進(jìn)行測試 我的處理是通過反射進(jìn)行一個調(diào)用 達(dá)到預(yù)期效果
代碼如下:
ReflectionTestUtils.invokeMethod();
那怎么傳 null 百度了一番之后發(fā)現(xiàn)沒有人這樣做過,可能因為這樣做太過于奇葩。但是沒辦法現(xiàn)在就是要實現(xiàn)。于是在博主的各種實驗下,終于發(fā)現(xiàn)了如下的放法可以傳一個null的參數(shù)進(jìn)去
傳入 參數(shù)為 new Object[]{null} 即可文章來源:http://www.zghlxwxcb.cn/news/detail-506708.html
代碼如下文章來源地址http://www.zghlxwxcb.cn/news/detail-506708.html
ReflectionTestUtils.invokeMethod(gpAlertInfoServiceImpl,"postGpInfo",new Object[]{null})
到了這里,關(guān)于mockito+junit 單元測試 測試私有方法利用反射去調(diào)用提升覆蓋率 反射調(diào)用時傳入?yún)?shù)為 null的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!