java – 单元测试Web服务调用

我正在开发一个
Java项目,它被分成一个Web项目和一个后端项目.网络通过Web服务调用与后端进行通信.

Web项目中有一个类可以进行所有Web服务调用,我想在这个类中添加测试.我想进行单元测试,而不是功能测试,所以我不想让Web服务实际运行来运行测试.如果这个类只是将调用传递给后端,我可能会愿意忽略测试它,但是此时有缓存发生,所以我想测试它是否正常工作.

当生成Web服务jax-ws wsgen时,它会创建一个前端使用的接口.我使用这个生成的接口来创建一个假对象进行测试.这非常有效,但这种方法存在问题.

我目前是我团队中唯一一个正在进行单元测试的人,所以我是唯一一个维护测试代码的人.我希望能够在构建其余代码时构建测试代码,但是如果其他人在其中一个Web服务类中引入了新方法,那么接口将在其上使用新方法,并且我的假对象不会实现它,因此会被破坏.

Web和后端代码项目彼此不相关,我不想在它们之间引入依赖关系.因此,在Web服务端点上引入一个接口似乎不合理,因为如果我把它放在后端,我的Web代码需要引用它,如果我把它放在前端,我的后端代码需要引用它.我也无法扩展端点,因为这也会在项目之间引入依赖关系.

我不熟悉Web服务的工作方式,以及如何为Web项目生成类以便能够引用它们.所以,我不知道如何在后端创建一个可供我在Web项目中使用的界面.

所以,我的问题是,如何在不引入项目依赖项的情况下(在Eclipse构建路径中)将接口提供给我的前端项目?或者,是否有另一种更好的方法来伪造我正在调用的后端Web服务?

最佳答案 首先,我将缓存代码分解为一个不直接依赖于Web服务调用的可测试单元.

至于Web服务,我发现运行Web服务的功能测试和模拟Web服务的其他测试都很有用.功能测试可以帮助您找到您的模拟可能遗漏的边缘情况.

例如,我正在使用Axis2并从WSDL生成存根.对于模拟,我只是实现或扩展生成的存根.在我们的例子中,真正的Web服务由外部组织实现.通过探索性功能测试探索他们的Web服务已经揭示了一些需要处理的异常,仅通过检查生成的存根就不明显了.我使用这些信息来更好地模拟这些边缘情况.

点赞