0

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

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

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

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

4

1 回答 1

1

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

通常,正如您所提到的,在单元测试时,您在后端依赖的所有东西都需要被模拟(或通常加倍),无论这些东西到底是什么。如果您依赖某个外部端点,则必须模拟它。如果你依赖 RDBMS,你也可以模拟它,但可能更好的测试替身在这里是假的而不是模拟,所以你可以使用一些内存数据库(如 HSQL 或 H2),假设你没有使用特定于供应商的, 代码中的原生 SQL。事实上,您仍然提供一些自己的、通常简化的某些接口的实现,但现在您为此使用模拟框架。前段时间,开发人员编写自己的手工模拟类。即使在今天,在没有 mocking 框架的帮助下制作自己的 mock 有时确实是个好主意。

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

于 2012-04-17T09:37:24.337 回答