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

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 综合教程 >内容正文

综合教程

PowerMock与EasyMock的应用(转)

發布時間:2023/12/13 综合教程 33 生活家
生活随笔 收集整理的這篇文章主要介紹了 PowerMock与EasyMock的应用(转) 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

 Leader請求在做Junit測試的時辰,Mock掉各個辦法之間的依附。這兩天進修了下PowerMock的應用。

  PowerMock是EasyMock的一個擴大,參加了static,final,private,以及constructor的Mock功能。然則PowerMock并沒有持續EasyMock的一些測試功能,所以不克不及庖代EasyMock,而零丁應用。在很多時辰必必要PowerMock和EasyMock彼此連絡,以及加上WhiteBox,才干更好實現測試。

  1. 必不成少的一步:添加測試運行器@RunWith(PowerMockRunner.class),若是沒有添加這個運行器,則應用的是默認的JUnit4.class。在PrepareForTest中參加測試class。@PrepareForTest(測試.class)

  2. Construtor

    public class A{
    public void doA(){
  B.doB();
  }
  }

    public class B{
    public B(){
   System.out.println("can""t be here!");
    }
    }

    測試classA中的doA辦法:

  @RunWith(PowerMockRunner.class)
  @PrepareForTest({A.class})
  public class ATest {

  @Test
  public void testdoA() throws Exception {
  B mockB = PowerMock.createMock( B.class );
  PowerMock.expectNew( B.class ).andReturn(mockB);
  A testA = new A();
  PowerMock.replayAll();
  testA.doA();
  PowerMock.verifyAll();
  }

  }

  3.static

    測試static辦法的時辰必必要加上@PrepareForTest(靜態辦法.class),不然就會拋出java.lang.IllegalStateException: no last call on a mock available異常。若是有多個class,用{},例如@PrepareForTest({A.class,B.class})

    public class A{
    public void doA(){
  B.doB();
    }
    }

    public class B{
    public static String doB() {
   return ("can""t be here !");
    }
    }

    測試classA中的doA辦法:

    @RunWith(PowerMockRunner.class)
    @PrepareForTest({A.class, B.class})
    public class ATest {
    @Test
    public void testdoA() throws Exception {
    PowerMock.mockStatic( B.class );
    EasyMock.expect(B.doB()).andReturn("Mocked !");
    A testA = new A();
    PowerMock.replayAll();
    assertEquals("Mock not complete !", testA.doA(), "Mocked !");
    PowerMock.verifyAll();
    }
    }

  4.mock類中的Field

    一個好的Field應當有getter和setter,然則代碼中沒有,我們也可以用WhiteBox來Mock掉Field。

    public class A{
    private String C;

    public A(){
    C = "Can""t be here !";
    }

    public String doA(){
    return C;
    }

    }

    測試A中的doA辦法

    @RunWith(PowerMockRunner.class)
    @PrepareForTest({A.class, B.class})
    public class ATest {

    @Test
    public void testdoA(){
    A testA = new A();
    String mockC = "Mocked !";
    Whitebox.setInternalState( testA, "C", mockC );
    assertEquals("Mock not complete !", testA.doA(), "Mocked !");
    }

    }

原網頁網址:http://www.byywee.com/page/M0/S820/820868.html

總結

以上是生活随笔為你收集整理的PowerMock与EasyMock的应用(转)的全部內容,希望文章能夠幫你解決所遇到的問題。

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