Mockito自定義verify引數Matcher

2021-09-22 11:20:42 字數 2721 閱讀 5556

在tdd開發中,也許我們會遇見對一些重要的無返回值的行為測試,比如在使用者的積分db中增加使用者的積分,這個行為對於我們的業務具有重要的價值,所以我們也希望能測試覆蓋這部分業務價值。這個時候我們就得使用mockito帶來的verify斷言,但verify的引數斷言主要有eq,或者any常見的方式。有時我們也希望能夠斷言物件的一部分屬性,比如上文的積分數值,對於不同的場景增加的使用者積分可能不同。

回到mockito的引數matcher,mockito給我們提供了argumentmatcher,以供我們來擴充套件matcher。下面假設乙個增加使用者積分的場景:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

21

22

23

24

publicclassgame

publicstring gettype()

publicintgetrate()

}

publicclassgamedao

}

我們希望能夠對verify gamedao呼叫了addrate,並且是積分rate為特定值。

所以我們可以擴充套件mockito的argumentmatcher:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

publicclasspartymatcherextendsargumentmatcher

publicstaticpartymatcherpartymatcher(functiongetproperty, object value)

@override

publicbooleanmatches(object o)

}

所以我們的測試可以如下:

1

2

3

4

5

6

7

8

9

10

11

12

13

14

15

16

17

18

19

20

@test

publicvoidshould_run_customer_mockito_matcher()throwsexception

},7)));

verify(gamedao).addrate(argthat(newpartymatcher(newfunction()

},"簽到")));

}

mockito給我們提供了很多關於matcher擴充套件的方法,本文只是argumentmatcher的例項。

自定義 如何自定義協議

何為自定義協議,其實是相對標準協議來說的,這裡主要針對的是應用層協議 常見的標準的應用層協議如http ftp smtp等,如果我們在網路通訊的過程中不去使用這些標準協議,那就需要自定義協議,比如我們常用的rpc框架 dubbo,thrift 分布式快取 redis,memcached 等都是自定義...

自定義控制項 自定義鐘錶

private context mcontext 畫筆 private paint mpaint 控制項的寬 private int mwidth x方向的圓心座標 private int center 鐘錶的半徑 private int mradio 圓環的寬 private int stroke...

自定義控制項及自定義屬性

自定義控制項在android開發中的重要性,是不言而喻,眾人皆知的。希望通過這二天的學習,能讓大家了解自定義控制項的原理,熟悉自定義控制項的使用步驟,並能寫出一些普通的效果。內容介紹 1 使用系統控制項,實現自定義的效果,案例有 優酷環形選單 廣告條 viewpager 下拉列表 spinner 2...