Java 如何针对损坏的服务器测试客户端实现?

Java 如何针对损坏的服务器测试客户端实现?,java,testing,client-server,Java,Testing,Client Server,我正在开发一个连接到外部服务(使用ApacheHttpComponents)的JavaHTTP客户机类。我需要确保当服务器端开始意外工作时,我的客户端实现能够以可预测的方式运行,比如突然断开连接、错误响应、不一致的头、超时等 在运行测试时,如何可靠地模拟此类条件?我不介意连接到发生故障的远程服务器,但最好是本地工作的解决方案。我建议创建一个模拟器,它将模拟与服务器相同的行为。对其进行编码,使其能够针对相同的请求逐个发送上述响应,以便您能够测试所有响应消息。如果您知道实际服务器在所有这些条件下可以

我正在开发一个连接到外部服务(使用ApacheHttpComponents)的JavaHTTP客户机类。我需要确保当服务器端开始意外工作时,我的客户端实现能够以可预测的方式运行,比如突然断开连接、错误响应、不一致的头、超时等


在运行测试时,如何可靠地模拟此类条件?我不介意连接到发生故障的远程服务器,但最好是本地工作的解决方案。

我建议创建一个模拟器,它将模拟与服务器相同的行为。对其进行编码,使其能够针对相同的请求逐个发送上述响应,以便您能够测试所有响应消息。如果您知道实际服务器在所有这些条件下可以发送哪些响应,那么还可以在模拟器中硬编码响应

试试Arquillian()框架。可能适合你的需要

以下是功能列表:

  • 您可以使用JavaSocket和ServerSocket类来模拟服务器行为,但我认为编写代码太繁琐了
  • 您可以使用一些成熟的框架,如ApacheMina框架,请参考
  • 您可以配置ApacheHTTP服务器,使客户端访问不同的目录。apache http服务器能够根据URL路径响应不同的http代码
  • 您可以安装简单的ApacheTomcatservlet容器并编写一些JSP。在这些JSP中,您可以定义response.setHeader或其他一些http响应代码

  • 你就不能用一个模拟对象吗?或者在本例中是一个模拟服务器。我想这是最安全的选择,尽管这有点像重新发明轮子。但即使是硬编码的响应也可以完成这项工作,如果只需要用于测试的话。当然,我只需要针对无法用响应复制的情况的测试用例