日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

JMokit中的@Mocked与@Injectable区别

發布時間:2024/3/13 编程问答 41 豆豆
生活随笔 收集整理的這篇文章主要介紹了 JMokit中的@Mocked与@Injectable区别 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

JMokit中的@Mocked與@Injectable區別

官方Tutorials:http://jmockit.org/gettingStarted.html#mockObject

首先,兩個注解都可用于測試類成員mock field與參數用例參數mock parameter,對mock field的注解作用于整個測試類,而對mock parameter的注解只針對該測試用例

@Mocked與@Injectable的區別:前者針對類型,后者針對單個實例

有一個類ToBeMocked,具備一個public方法fun()

public Class ToBeMocked {public String fun(){return "call original method";} }

以下分為四種情況討論

  • @Mocked作用于測試類成員

整個測試類中被mock的類型的所有實例都將被mocked,被mocked的類所有非private方法都將處于mocked狀態,被mocked的方法默認返回值null

public class MockedAndInjectableTest1 {@MockedToBeMocked instance;@Testpublic void test(){System.out.println(instance.fun()); //nullToBeMocked newInstance = new ToBeMocked();System.out.println(newInstance.fun()); //null} }
  • @Mocked作用于測試用例參數

該用例參數中被注解的類型將處于mock狀態

public class MockedAndInjectableTest {@Testpublic void test1(@Mocked final ToBeMocked instance){System.out.println(instance.fun()); //nullToBeMocked newInstance = new ToBeMocked();System.out.println(newInstance.fun()); //null}@Testpublic void test2(){ToBeMocked newInstance = new ToBeMocked();System.out.println(newInstance.fun()); //call original method} }
  • @Injectable作用于測試類成員

被注解的單個實例在整個測試類中將處于mocked狀態

public class MockedAndInjectableTest {@InjectableToBeMocked instance;@Testpublic void test(){System.out.println(instance.fun()); //nullToBeMocked newInstance = new ToBeMocked();System.out.println(newInstance.fun()); //call original method} }
  • @Injectable作用于測試類參數

被注解的單個實例在該測試用例中將處于mocked狀態

public class MockedAndInjectableTest {@Testpublic void test1(@Injectable final ToBeMocked instanceA){System.out.println(instanceA.fun()); //nullToBeMocked newInstance = new ToBeMocked();System.out.println(newInstance.fun()); //call original method}@Testpublic void test2(){ToBeMocked newInstance = new ToBeMocked();System.out.println(newInstance.fun()); //call original method} }

總結

以上是生活随笔為你收集整理的JMokit中的@Mocked与@Injectable区别的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。