【发布时间】:2021-11-16 01:17:56
【问题描述】:
我正在尝试对具有内部服务器连接(比如说套接字连接)的方法编写单元测试。我的测试用例失败了,我认为问题在于我模拟对象的方式。我是单元测试的新手,所以我不知道下一步该做什么。
这是我正在尝试测试的方法。
class ModuleSpectator {
public long getTotalModules(String server_id){
Server server = new Server(server_ip); // this connects to a 3rd party server.
ServerState serverState =server.getServerState(server_id); // resposnse from the server
return = (long) serverState.getTotalModules();
}
}
这是单元测试。
@Test
public void testGetTotalModules(){
String server_id="ser_01";
ModuleSpectator moduleSpectator = mock(ModuleSpectator.class);
Server serverMock = mock(Server.class);
ServerState serverState =new ServerState();
serverState.setTotalModules(50);
when(serverMock.getServerState(server_id)).thenReturn(serverState);
assertEquals(50, moduleSpectator.getTotalModules(server_id));
}
当 assertEquals() 中的moduleSpectator.getTotalModules(server_id) 执行时,它实际上是在尝试连接第 3 方服务器。如何停止这种行为并成功设置和模拟响应?
【问题讨论】:
标签: java unit-testing testing junit mocking