@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。在这里,我正在尝试Mack管理搜索数据服务类,其中包含搜索数据和测试方法,但是
搜索模拟对象未调用的数据
并且已成功调用正常测试方法。搜索数据是我的Web方法,正如你所看到的方法。
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
}
}
你不应该模拟你想要测试的类。您可以模拟除要测试的类之外的所有其他类/对象。
正如人们已经指出的那样,嘲笑ManageSearchDataService
没有任何意义。您正在创建服务的模拟对象,然后测试该模拟对象,这不会告诉您有关服务的任何信息。模拟是针对依赖关系的,例如,如果您的服务使用另一个对象从数据库加载数据,那么模拟这将是单元测试的一个好主意(因为否则,如果数据库关闭,您的测试将失败 - 即使代码完全正常(。
模拟允许你通过"模拟"它的所有依赖项来测试一个单元,所以你不必依赖它们是否正常(这是其他单元测试的问题(,因为你以一种好像它们没问题的方式模拟它(或者不是,如果你想测试你的单元中的错误处理(。
由于您的类根本不包含任何这样的依赖项(除了打印之外,它实际上不执行任何操作(,因此您在这里可以或不应该嘲笑任何东西。