前面都已經講完了junit,還需要什麼?在測試的時候有的物件難以獲取,但是又需要依賴這個物件。
舉例什麼的情況呢?
第二個類的方法需要乙個類物件作為引數,而這個引數又很難實現或者又要依賴第三個物件
public numbertest(a a)
//將numbertest物件作為引數傳入
public int addnumber(numbertest numbertest)
如上所述,那麼測試乙個方法就需要建立三個物件,對於單元測試來說就有點太過於麻煩了,所以需要新的測試類庫——mock。
首先依賴的方式:testimplementation 『org.mockito:mockito-core:2.11.0』
這個類庫可以建立乙個假的物件,這個物件還可以做物件的事,並且還可以完成驗證沒有返回值的方法。
首先建立mock物件有兩種方法:
第一種通過mock的方法:
class cls=mock(mock的物件.class)
第二種通過註解的方式:
@mock
但是要初始化註解:mockitoannotations.initmocks(this);
mock類有兩個重要的方法:
verify()是mock中驗證沒有返回值的測試方法。
when().thenreturn();是將某種方法指定返回值
為什麼說兩個重要的方法呢?
下面這張就是效果圖,因為使用了mock註解就會發現,下面直接呼叫這個物件的時候沒有空指標的異常,大家可以試試在上述初始化的mock註解去掉或者去掉@mock的註解,都會報空指標的異常。
怎麼來驗證沒有返回值的方法呢?
只有執行一次,使用verify就可以驗證,也可以驗證幾次執行。
比如上圖中,在方法裡加入引數atleast,表明最少執行幾次,但是由於只執行了一次,所以會報錯。
注意:verify()引數是mock物件,後面才是被驗證的方法。
假如有返回值怎麼辦呢?
由上圖可以得知,when().thenreturn(),可以返回值。還有其他的then方法。
起亞的do().when()的方法,還有其他的api可以考慮的看一下。
其他的方法
verifynomoreinteractions():所有被呼叫的方法是否都被驗證了。
對比上述兩張圖,當所有方法被驗證的,呼叫verifynomoreinteractions()方法的時候才會表明是正確的。
這個方法可以驗證新增的方法有沒有被驗證。
是否在mock有了解呢?
需求千萬條,質量第一條 單元測試的前生今生
和標題是一樣的 需求千萬條,質量第一條,保證 的質量是開發者應該具備的硬性能力。其實很多開發者都明知道單元測試很重要,但是為什麼還那麼反感單元測試呢?原因有三 1.單元測試太浪費時間了,很多需求都做不完,哪有功夫閒心去做單元測試,如果做單元測試,完成不了需求,程式猿是需要背鍋的,所以為了不背鍋只能捨...
網路千萬條,安全第一條
據cybersecurity insider機構最新發布的 2018年企業網路內部威脅報告 90 的企業認為自己容易受到內部攻擊,53 的企業確認在2018年曾受到過5次以內的內部攻擊,而27 的企業甚至更加頻繁地受到內部攻擊。而企業網路內部容易受到攻擊的主要原因包括,擁有過度訪問權的使用者太多 3...
OA選型千萬條,廠商靠譜第一條
在時代發展的激流中,oa軟體逐漸成為了企業資訊化建設的標準配置。但是關於選型也是乙個難題,因為要考慮眾多因素,比如 產品本身 廠商 服務等。而對於軟體本身,可以通過前期演示和後期試用來加以考核,那怎樣評估oa廠商的服務呢?實際上,廠商是否能夠提供良好的服務才是企業選型應該考量的關鍵因素。但是,很多企...