2017-08-24 13 views
0
@WebService(name = "ManageSearchDataPortType", targetNamespace = "https://abc/searchData", serviceName = "ManageSearchData", portName = "ManageSearchDataPort", wsdlLocation = "/WEB-INF/wsdl/ManageSearchData.wsdl") 
@SOAPBinding(parameterStyle = SOAPBinding.ParameterStyle.BARE) 
import com.xyz.SearchDataRequest; 
import com.xyz.SearchDataResponse; 

@XmlSeeAlso({ ObjectFactory.class, com.abc.ObjectFactory.class, com.abc..ObjectFactory.class, com.abc..ObjectFactory.class }) 
public class ManageSearchDataService { 

    @WebResult(name = "searchDataResponse", partName = "searchDataResponse", targetNamespace = "https://abc/searchData") 
    @WebMethod(action = "http://example.com/wsdl/ManageABC/2008/10/22#searchData") 
    public SearchDataResponse searchData(@WebParam(name = "searchDataRequest", partName = "searchDataRequest", targetNamespace = "https://abc/searchData") 
     SearchDataRequest searchDataRequest) { 
     System.out.println(" searchData Methodthod"); 

    } 

    public void test(); 
    { 
    System.out.println("TEST Method"); 
    } 
    } 

下面的工作是我的的JUnit的Mockito測試類包含即DoSomething的測試方法。在這裏,我想麥克其上面顯示包含searchData和測試方法ManageSearchDataService類,但SOAP與MockitoJUnit沒有在java中

searchData不會被調用的模擬對象

和正常的測試方法已成功地調用。 searchData是我的WebMethod,您可以看到該方法。

HeaderClass只是包含getMPLNHeader靜態方法的普通調用。

請任何人有任何想法如何做到這一點讓我知道。

package com.test; 
import org.junit.Test; 
import org.junit.runner.RunWith;  
import org.mockito.Mock; 
import org.mockito.runners.MockitoJUnitRunner; 

import com.xyz.SearchDataRequest; 
import com.aaa.ManageSearchDataService; 

@RunWith(MockitoJUnitRunner.class) 
public class JunitTestClass { 
    @Mock ManageSearchDataService mockObj ; 

    @Test 
    public void doSomething() { 
     SearchDataRequest searchDataRequest= new SearchDataRequest(); 
     searchDataRequest.setStandardHeader(HeaderClass.getMPLNHeader("ASV")); 
     mockObj.searchData(searchDataRequest); // not Working 
     mockObj.test();  // this working fine printing data 
    } 

    } 
+0

這是模擬對象的預期行爲。他們不會調用這個方法,但會給你你嘲笑的結果。 'mockobj.when(methodname).then(result)' – Deepak

回答

0

你不應該模擬你想測試的類。除了要測試的類以外,您可以模擬其他所有類/對象。

+0

你有任何例子嗎? – addy

+0

http://www.vogella.com/tutorials/Mockito/article.html –

0

正如人們已經指出的那樣,嘲諷ManageSearchDataService沒有任何意義。你正在爲你的服務創建一個模擬對象,然後測試這個模擬,這不會告訴你有關你的服務的任何信息。例如,如果您的服務使用另一個對象從數據庫加載數據,那麼嘲笑這將是一個單元測試的好主意(因爲否則,如果數據庫關閉,您的測試將失敗 - 即使完全可以編碼)。模擬允許你通過「模擬」它的所有依賴來測試一個單元,所以你不必依靠它們就可以了(這是其他單元測試的問題),因爲你用某種方式模擬它就好像它們是好的(或者,如果你想測試你的單元中的錯誤處理)。

由於你的類根本不包含任何這樣的依賴關係(它實際上除了打印之外沒有其他任何依賴關係),所以沒有什麼可以或不應該在這裏嘲笑。