剛實習的前幾個月做了一段時間的單元測試,那時候也算是剛接觸單元測試,也碰到很多問題解決了但是沒有記錄下來,之後又轉開發功能去了,現在又需要寫單元測試好多技巧都忘了,同時也碰到一些新的問題解決了,所以現在準備記錄下來:
1.模擬的引數為null:mockito.isnull()
2.模擬引數為任意類的物件:mockito.any(tjagency.class);此時方法報警告:新增注釋:@suppresswarnings(「unchecked」)
3.對於使用到私有方法的被測方法的測試:用到私有方法的地方必須讓被測方法自動跑到私有方法,考慮全面被測方法可能的各種情況,當私有方法還存在沒有測到的分支,這時才需要單獨測試私有方法。私有方法的測試利用反射機制,舉個栗子:
/**
* 得到相同父節點下的同名且處於刪除狀態的處室
*@param tjagency
*@return
*/private listfinddeleteedinsameparent(tjagency tjagency)else
if (stringutils.isnotempty(tjagency.getparentcode()))else
conditions.add(conditionutils.getcondition("deletestatus",condition.equals,constants.agency_delete));
return tjagencydao.commonquery(conditions,null);
}
上面是被測私有方法,下面是單元測試方法
@test
@suppresswarnings("unchecked")
public
void
testfinddeleteedinsameparentnodata()
}});
}
4.在程式中可以import org.mockito.mockito,然後呼叫它的static方法:
import static org.mockito.mockito.*;
使用hamcrest的斷言:
import static org.hamcrest.matcherassert.assertthat;
import static org.hamcrest.core.isequal.equalto;
5.測試的預期是丟擲異常直接在註解上加:@test(expected=bu***ception.class)
單元測試高階 使用 Mockito 進行測試
官方文件傳送門 mockito 官網 先來談談為什麼要用 mockito 如果某介面的功能是 根據一定邏輯往資料庫裡新增一條記錄的使用者註冊,那麼這個操作可以是認為有 的,除非你使用該介面後又進行回滾。rollback transactional顯然 spring 框架提供的上述註解可以很好的完成這...
使用mockito寫測試用例(二)
在第一篇文章中 使用mockito寫測試用例 一 介紹了使用mock寫一些的測試類。但是對於一些複雜的測試類,使用mockito還是有些困難的。但是為了覆蓋率,某些類的某些方法又必須測試得到,這就是個問題。mock的測試類無法呼叫靜態方法 使用powermock解決 如果想要mock多個層級的類,就...
使用mockito框架來測試私有方法
這裡舉乙個稍微複雜一點的例子 前段時間在看mybatis3.5.1的原始碼,原始碼本身所帶的單元測試用到了mockito框架 一 問題說明 看到這個方法,1.我會想到需要傳遞乙個list。這個好辦 該類只有乙個帶參構造方法 這幾個引數傳進去又會遇到問題,因為sqlcommand和method拿到傳的...