没有运行后端的 Spring-WS 2.0 单元测试



我希望能够在开发过程中进行一些单元测试,以便在扩展/更改给定Web服务(端点)的工作方式时捕获潜在错误。

我一直在看EasyMock,这似乎是一个可行的方法 - 但是...我正在使用 maven (2.0.9) 并想测试例如使用 mvn 测试,但这需要我的后端正在运行或我使用 EasyMock - 然后要求我可以连接到数据库(因此这也需要一些模拟)。我目前拥有的 Web 服务都从后端数据库检索数据......

由于我有 15 个左右的 Web 服务,由组织的不同部门以不同的版本使用,我非常希望能够测试更改不会破坏旧版本。

我不敢相信我是第一个遇到这个问题的人,所以任何提示、提示或类似的东西将不胜感激。

在基于评论的谈话:P之后,似乎实际上没有问题。关键是要了解某些组件的依赖项(如数据库)只是其真正的实现依赖项,而不是其接口的一部分。嘲笑是关于提供替代实现,只是为了满足交互的需求。

一般来说,正如你提到的,你在后端依赖的所有东西都需要在单元测试时被模拟(或一般地加倍),不管这些东西到底是什么。如果你依赖于某个外部端点,你必须模拟它。如果你依赖RDBMS,你也可以模拟它,但可能更好的测试双重在这里是假的而不是模拟的,所以你可以使用一些内存数据库(如HSQL或H2),假设你没有在代码中使用特定于供应商的本机SQL。事实上,你仍然提供一些自己的,通常是简化的一些接口的实现,但现在你为此使用模拟框架。前段时间,开发人员编写自己的手工制作的模拟类。即使在今天,有时在没有模拟框架帮助的情况下制作自己的模拟也是个好主意。就我个人而言,我遇到了这种方法非常适合的特殊情况。

顺便说一下,还有两件事。如果你也考虑做一些集成测试,Spring WS 从 2.0 版本开始提供了模块spring-ws-test,通过提供非常流畅的 API 来支持这一点。有关更多信息,如果您有兴趣,请查看 Spring WS 文档。第二件事,如果你刚开始一般的嘲笑,也考虑使用Mockito。在我看来,这也非常好。老实说,EasyMock 是我个人默认的 lib 选择,但我发现 Mockito 同样简单而强大。据我所知,它也受到许多开发人员的青睐,现在它可能更性感:P。

最新更新