组件测试
贯穿应用层和领域层的测试。不过通常来说,这部分的测试不会访问真实的外部数据源,而是使用同schema的内存数据库,而且对外部service的访问也会使用Stub的方式:
· 内存数据库
· Stub外部服务(WireMock)
· RestAssured
比如使用h2来做内存数据库,并且自动生成schema。使用WireMock来Stub外部的服务等。
如果使用Spring,还可以通过profile来切换不同的数据库。比如下面这个例子中,默认的profile会连接数据库jigsaw,而integration的profile会连接jigsaw_test数据库:
组件测试会涉及到的组件包括:
· URL路由
· 序列化与反序列化
· 应用对领域层的访问
· 领域层对数据的访问
· 数据库访问层
· 前后端分离
除了后端的测试之外,在目前的前后端分离场景下,前端的应用越来越复杂,在这种情况下,前端的组件测试也是一个测试的重点。
一个前端应用至少包括了这样一些组件:
· 前端路由
· 模板
· 前端的MVVM
· 拦截器
· 事件的响应
要确保这些组件组合起来还能如预期的执行,相关测试必不可少。这篇文章详细讨论了前后端分离之后的测试及开发实践。
契约测试
在微服务场景中,服务之间会有很多依赖关系。根据消费者驱动契约,我们可以将服务分为消费者端和生产者端,通常消费者自己会定义需要的数据格式以及交互细节,并生成一个契约文件。然后生产者根据自己的契约来实现自己的逻辑,并在持续集成环境中持续验证。
Pact已经基本上是消费者驱动契约(Consumer Driven Contract)的事实标准了。它已经有多种语言的实现,Java平台的可以使用pact-jvm及相应的maven/gradle插件进行开发。
· pact/pact-jvm
· pact-broker
乐搏第十八期VIP全栈课程即将开班
Python自动化课程
也将迎来下一批提升的同学
领取专属 10元无门槛券
私享最新 技术干货