2015-02-05 60 views
0

所以基本上我正在嘗試使用powermockito爲適用於服務類的適配器編寫一個使用web服務的Junit。Powermockito無法模擬超級調用

我有一個適配器,帶有一個構造函數,inturn通過調用超類在它自己的構造函數中創建一個新的服務對象。我必須測試我的適配器。我用mockito來模擬我的適配器以及我的服務類,但我不認爲模擬對象能夠執行超級調用。以下是我的代碼結構。我希望超類能夠在通話時返回我的模擬對象。

public class CommonPoolingServiceAdp { 

    private CPSSecurity cpsServicePort; 

    public CommonPoolingServiceAdp() {  
     CommonPoolingService service= new CommonPoolingService(); 
     cpsServicePort=service.getCommonPoolingServicePort(); 
    } 

    public SercurityDataResponse getBroadcastElements(broadcastReqObj) 
    { 
     SercurityDataResponse=null; 
     response=cpsServicePort.getBroadcastElements(broadcaseRequestObj); 
    } 
} 

public class CommonPoolingService extends Service { 

    { 
    static 
    { 
     //few mandatory initializations 
    } 

    public CommonPoolingService() 
    { 
     super(WSDL_Location,QName); 
    } 

    public CSPSecurity getCommonPoolingServicePort() { 
     return super.getPort(QName); 
    } 

    } 
} 
+0

你可以發佈你當前的測試代碼。所以你想調用'super.getPort(QName)'來返回一個模擬'CSPSecurity'? – clD 2015-02-09 12:16:24

回答

0

請多分享一下您的代碼。順便說一句,這是你如何嘲笑超級方法:

public class SuperClass { 

public void method() { 
     methodA(); // I don't want to run this! 
} 
} 
public class MyClass extends SuperClass{ 
public void method(){ 
    super.method() 
    methodB(); // I only want to test this! 
} 
} 

@Test 
public void testMethod() { 
MyClass spy = Mockito.spy(new MyClass()); 

// Prevent/stub logic in super.method() 
Mockito.doNothing().when((SuperClass)spy).methodA(); 

// When 
spy.method(); 

// Then 
verify(spy).methodB(); 
} 

希望,這將有所幫助。

相關問題