数据库测试的难点
db 中的数据相当于全局变量,所有人所有代码都可以对其进行修改,而且数据随时都在变化;普通的测试方式,无法保证对其进行的测试每次都能通过
需要专门的框架和手段进行保证。
推荐使用 dbunit 进行 db 相关测试
dbunit 的安装,使用 composer:
{
"require": {"phpunit/dbunit": ">=1.2"}
}
db 测试的主要步骤
1. 建立 fixture
2. 业务处理
3. 断言
1. 建立 fixture
相当于初始化 db,初始化的数据从哪里来?文本
- getConnection
- 读取 xml 文本(或者:cvs、yaml、mysql 导出数据、数组。。。)
- 将文本内容插入 db
这样就能保证,每次开始测试前 db 中的数据是确定的固定的。
2. 业务处理
3. 断言
- 使用框架提供的接口读取: Dataset、DataTable、RowCount
- 获取 expect 数据 =》从 xml 文本 or db 获取
- 断言 =》以上 2 者数据进行比对