2015-02-23 77 views
2

我使用PowerMockito這是我的測試:爲什麼PowerMockito不能正確地模擬這個類?

import com.PowerMockitoProduction; 
import org.apache.commons.httpclient.HttpClient; 
import org.junit.Test; 
import org.junit.runner.RunWith; 
import org.powermock.api.mockito.PowerMockito; 
import org.powermock.core.classloader.annotations.PrepareForTest; 
import org.powermock.modules.junit4.PowerMockRunner; 


@RunWith(PowerMockRunner.class) 
@PrepareForTest(HttpClient.class) 
public class PowerMockitoTest { 

    @Test(expected = UnsupportedOperationException.class) 
    public void test() throws Exception { 

     PowerMockito.whenNew(HttpClient.class).withNoArguments().thenThrow(new UnsupportedOperationException()); 

     new PowerMockitoProduction().createClient(); 

    } 
} 

該測試失敗。

java.lang.AssertionError: Expected exception: java.lang.UnsupportedOperationException 

這裏是PowerMockitoProduction做:

package com; 

import org.apache.commons.httpclient.HttpClient; 

public class PowerMockitoProduction { 

    public void createClient() { 
     HttpClient client = new HttpClient(); 
     System.out.println(client); 
    } 

} 

我希望在此基礎上線在我的測試此代碼來創建一個模擬HttpClient

PowerMockito.whenNew(HttpClient.class).withNoArguments().thenThrow(new UnsupportedOperationException()); 

但它似乎沒有不影響我的生產代碼。我究竟做錯了什麼?

回答

2

我想清楚我做錯了什麼。我需要改變:

@PrepareForTest(HttpClient.class) 

@PrepareForTest(PowerMockitoProduction.class) 
相關問題