使用mockito模擬被測試類的成員時特殊問題

2021-08-19 02:24:57 字數 1282 閱讀 7077

剛實習的前幾個月做了一段時間的單元測試,那時候也算是剛接觸單元測試,也碰到很多問題解決了但是沒有記錄下來,之後又轉開發功能去了,現在又需要寫單元測試好多技巧都忘了,同時也碰到一些新的問題解決了,所以現在準備記錄下來:

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拿到傳的...