我有一个想要进行单元测试的Java方法,但它需要一个包含多个列表和节点层的模拟SOAP响应。我这样做是用手写的模拟,即只是手动创建对象和设置值,但由于响应非常复杂,所以构建响应的痛苦。我有一个示例XML响应是否有一种使用XML创建模拟的简单方法?
另外我看了Mockito,它对于简单的对象看起来很好,但它似乎对复杂的响应有好处(我可能没有充分利用它)。
应用程序堆栈是Java 1.6,Spring 3并使用JAX-WS。
答案 0 :(得分:0)
我这样做
@WebService
public class MyWebService {
@Autowired
private ServiceBean serviceBean;
public SomeReturedData getData(SomeInputData inputData) {
return serviceBean.getData(inputData);
}
}
对于我的UnitTest,我有一个“ServiceBean”的模拟实例,我将其注入@MyWebService,并使用“in-vm”传输部署“MyWebService”,如here所述
通过使用in-vm传输,所有XML编组/解组仍然由Web服务框架完成,您只需要处理Java部分。
现在有人可能会问,为什么不直接测试“ServiceBean”,为什么需要使用in-vm传输来解析WS?好吧,有两件事,使用in-vm传输,你可以测试JAXB XML编组/解组是否正常工作,它还允许你测试你可能为你的web服务定义的任何拦截处理程序。