PHPunit

PHPunit


    https://phpunit.de/index.html

目标

  1. 简单! 高效敏捷 代码易写,逻辑简单
  2. 稳定! 持续集成 提交代码自动生成测试报告
  3. 清晰! 文档体现 容易理解

数据库测试的难点和解决方案

难点

为以数据库为中心的单元测试将远难于仅基于逻辑程序的单元测试。

对数据库进行测试时,需要处理以下可变因素:

  • 清理脏数据
  • 准备新数据
  • 验证数据状态

而我们的测试代码应当尽可能简短精确,这有若干原因:

  • 我们不希望为生产代码的小变更而对测试代码进行数量可观的修改。
  • 我们希望在哪怕好几个月以后也能轻松地阅读并理解测试代码

方案

用 PHPunit 提供的 DbUnit 套件来完成上述的事情

  1. 自动用清理数据库环境 (如果能逻辑清理脏数据是最好的,但目前还不能实现)
  2. 自动插入测试所需要的行
  3. 更简单的验证数据库状态

目前发现的缺陷

不支持多数据库连接,还好我们可以封装一个简单的类来让支持这个需要。

目录结构

应用目录结构

.
├── applications
│   ├── configs
│   ├── init
│   ├── library
│   ├── public
│   ├── runtime
│   ├── service
│   ├── template
│   └── tests        //单元测试目录
├── sdk
└── Vipcore

单元测试目录结构

.
├── ApiTest              //单元测试代码
│   ├── Brand            
│   └── Merchandise     
├── bin                  
│   └── phpunit         //phpunit包
├── DataBase                  
│   └── vipshop         //数据库表初始化
├── Bootstrap.php       //初始化脚本
├── phpunit.xml         //phpunit 配置文件
├── README.md           //README
└── run-tests.php       //执行文件

执行测试

php run-test.php  //测试全部用例
php run-test.php ApiTest/Brand  //测试部分用例
php run-test.php ApiTest/Merchandise/MerchandiseTest.php  //测试单个文件
php run-tests.php ApiTest/Merchandise/MerchandiseTest.php --filter testModifyByMidHasLog  //测试单个单元测试

编写测试脚本

数据增删改接口

  1. 准备数据环境
  2. 执行测试接口
  3. 检验数据状态
  4. 清理数据环境

数据查询接口

  1. 准备数据环境
  2. 执行测试接口
  3. 检验返回状态
  4. 清理数据环境

Edit By MaHua

你可能感兴趣的:(phpunit)