日韩无码专区无码一级三级片|91人人爱网站中日韩无码电影|厨房大战丰满熟妇|AV高清无码在线免费观看|另类AV日韩少妇熟女|中文日本大黄一级黄色片|色情在线视频免费|亚洲成人特黄a片|黄片wwwav色图欧美|欧亚乱色一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時(shí)間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營(yíng)銷解決方案
使用PowerMock來(lái)Mock靜態(tài)函數(shù)

EasyMock和Mockito等框架,對(duì)static, final, private方法均是不能mock的。 這些框架普遍是通過(guò)創(chuàng)建Proxy的方式來(lái)實(shí)現(xiàn)的mock。 而PowerMock是使用CGLib來(lái)操縱字節(jié)碼而實(shí)現(xiàn)的mock,所以它能實(shí)現(xiàn)對(duì)上面方法的mock。今天先來(lái)看一個(gè)簡(jiǎn)單的例子吧:

成都創(chuàng)新互聯(lián)專業(yè)IDC數(shù)據(jù)服務(wù)器托管提供商,專業(yè)提供成都服務(wù)器托管,服務(wù)器租用,服務(wù)器托管,服務(wù)器托管,成都多線服務(wù)器托管等服務(wù)器托管服務(wù)。

***個(gè)注解是指定Runner

第二個(gè)是你要測(cè)試的類,這個(gè)里面調(diào)用了靜態(tài)類

下面我結(jié)合EasyMock給一個(gè)簡(jiǎn)單的例子:

Java代碼

 
 
 
  1. import java.io.IOException;     
  2.     
  3. public class SystemPropertyMockDemo {     
  4.     public String getSystemProperty() throws IOException {     
  5.         return System.getProperty("property");     
  6.     }     

Java代碼

 
 
 
  1. import org.easymock.EasyMock;     
  2. import org.junit.Assert;     
  3. import org.junit.Test;     
  4. import org.junit.runner.RunWith;     
  5. import org.powermock.api.easymock.PowerMock;     
  6. import org.powermock.core.classloader.annotations.PrepareForTest;     
  7. import org.powermock.modules.junit4.PowerMockRunner;     
  8.     
  9.     
  10. @RunWith(PowerMockRunner.class)     
  11. @PrepareForTest({SystemPropertyMockDemo.class})     
  12. public class SystemPropertyMockDemoTest {     
  13.     @Test    
  14.     public void demoOfFinalSystemClassMocking() throws Exception {     
  15.         PowerMock.mockStatic(System.class);     
  16.       
  17.         EasyMock.expect(System.getProperty("property")).andReturn("my property");     
  18.       
  19.         PowerMock.replayAll();     
  20.       
  21.         Assert.assertEquals("my property",     
  22.                                   new SystemPropertyMockDemo().getSystemProperty());     
  23.       
  24.         PowerMock.verifyAll();     
  25.     }     
  26. }    

測(cè)試用例里面增加了PrepareForTest注解,表明要測(cè)試的類,里面包含靜態(tài)方法的調(diào)用。

然后在測(cè)試類里面指定要測(cè)試的靜態(tài)類和它的方法。

實(shí)際上PowerMock是在EasyMock上面做了擴(kuò)展,這些寫法都是和EasyMock相同的。

今天先寫這么一個(gè)簡(jiǎn)單的例子,然后以后會(huì)將用到的都寫上來(lái)。

當(dāng)然了,更多的可以參考:

http://code.google.com/p/powermock/

另外它的maven依賴如下,我在使用的時(shí)候就弄錯(cuò)了

Xml代碼

 
 
 
  1.     
  2.           org.powermock groupId>    
  3.           powermock-module-junit4 artifactId>    
  4.           1.4.8 version>    
  5.           test scope>    
  6.         dependency>    
  7.            
  8.           org.powermock groupId>    
  9.           powermock-api-easymock artifactId>    
  10.           1.4.8 version>    
  11.           test scope>    
  12.         dependency>    

分享文章:使用PowerMock來(lái)Mock靜態(tài)函數(shù)
文章出自:http://www.5511xx.com/article/dhocphg.html