- 🍈单元测试聚焦一个类、集成测试着眼一个模块、功能测试涵盖整个系统
- 🍉单元/集成/功能测试需区分进行不同处理
- 🍊根据测试金字塔,单元测试占
70%
,集成测试占20%
、功能测试占10%
- 🍋
Spock
支持集成和功能测试 - 🍌如果类有
ContextConfiguration
注解标注,那么将自动支持Spring
- 🍍
Spring
支持的Spock
测试将集成其原有特性(如事务) - 🥭最佳实践是为测试提供不同环境,如内存数据库
- 🍎
Groovy SQL
可以代替现有Java
数据库访问库 - 🌽
Spock
原生支持Guice
,且支持Arquillian
扩展 - 🍆
Spock
可以使用Java REST
客户端测试REST
服务 - 🍅使用
Groovy REST
客户端代替Java
客户端 - 🍓
Stepwise
注解可以保持方法执行顺序 - 🍒
Stepwise
标注的类,失败方法之后的不会执行,可以以此来节省时间 - 🍑
Geb
使用WebDriver/Selenium
进行web
测试,并提供类JQuery
语法 - 🍐
Spock
和Geb
结合进行web
功能测试 - 🍏
Geb
测试需继承GebSpec
- 🍖
Geb
可以直接访问浏览器内容,点击按钮以及模仿其它交互 - 🍗构建过程中应区分单元/集成/功能测试,因为不同测试耗时不同
- 🥩可以使用
Maven failsafe
和Tomcat
插件运行Spock
功能测试 - 🍠运行
JUint
和Spock
混合测试无需任何配置 - 🥟使用
JaCoCo
生产代码覆盖率报告 - 🥠
Spock
兼容SonarQube
代码质量检测,且开箱即用