JMokit中的@Mocked与@Injectable区别
生活随笔
收集整理的這篇文章主要介紹了
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区别的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 新概念英语0
- 下一篇: openldap范例数据库mysql_用