서버가 문자열을 반환하는지 테스트하려고합니다. 그러나 실제로 서버에 연결하지 않고 테스트하고 싶습니다. 나는 서버를 조롱해서 java.net.SocketException을 제거하려고 노력하고있다. 어떤 접근 방식을 취해야합니까?Mockito를 사용하여 서버 모의 시도
아래 코드는 서버에 필요한 모든 값을 선언합니다.
@RunWith(MockitoJUnitRunner.class)
public class testTransfer {
@Test
public void getServerMessage() {
//variables
String serverhostname = "serverA";
int portNo = 8888;
int versionNo = 9999;
String protocol = "tcp";
String serverInput = "input string";
String url = "http://localhost:8080/server/url";
Service service =new Service();
Call call = Mockito.mock(Call.class);
server_string result = Mockito.mock(server_string.class);
아래 코드는 서버를 호출하고 XML 내부에 값을 추가합니다.
//try catch
try {
call=(Call)service.createCall();
QName qn = new QName("urn:ServerApiService", "server_string");
call.registerTypeMapping(server_string.class, qn,
new org.apache.axis.encoding.ser.BeanSerializerFactory(server_string.class, qn),
new org.apache.axis.encoding.ser.BeanDeserializerFactory(server_string.class, qn));
call.setTargetEndpointAddress(new java.net.URL(url));
call.addParameter("arg1", XMLType.XSD_STRING, ParameterMode.IN);
call.addParameter("arg2", XMLType.XSD_INT, ParameterMode.IN);
call.addParameter("arg3", XMLType.XSD_INT, ParameterMode.IN);
call.addParameter("arg4", XMLType.XSD_STRING, ParameterMode.IN);
call.addParameter("arg5", XMLType.XSD_STRING, ParameterMode.IN);
call.addParameter("arg6", qn, ParameterMode.OUT);
call.setOperationName(new QName(url, "getServerMessage"));
call.setReturnClass(server_string.class);
//result = (server_string) call.invoke(new Object[] {serverhostname,portNo,versionNo,protocol,serverInput});
result = (server_string) Mockito.when(call.invoke(new Object[] {serverhostname,portNo,versionNo,protocol,serverInput})).thenReturn(server_string.class);
System.out.println("Get server_string object from server ....");
// System.out.println("Value is "+result.value);
} catch (ServiceException e) {
e.printStackTrace();
} catch (MalformedURLException e) {
e.printStackTrace();
} catch (RemoteException e) {
e.printStackTrace();
}
}
}
그러나, 나는이
AxisFault
faultCode: {http://schemas.xmlsoap.org/soap/envelope/}Server.userException
faultSubcode:
faultString: java.net.SocketException: Connection reset
faultActor:
faultNode:
faultDetail:
{http://xml.apache.org/axis/}stackTrace:java.net.SocketException: Connection reset
실제로 테스트하는 것은 무엇입니까? 결과를 서버에서 조롱하려고하십니까? 여기에는 많은 상호 의존적 인 코드가 있기 때문에, 나는 당신이 테스트하려고하는 것이 무엇인지 100 % 명확하지 않습니다. – Makoto
@Makoto 예, 서버에서 결과를 다시 조롱하려고합니다. – user3720852