PHPUnit自己的手册有some as-yet-unwritten sections个标题为"操作"和"数据库测试最佳实践".

PHPUnit测试数据库的最佳实践是什么,尤其是在MySQL中?

推荐答案

当我使用PHPUnit进行数据库测试时,我会在第一个套件的开头加载我的MySQL转储,其中包含我假设在所有测试中都为真的任何信息.每次测试开始时,我都使用setupDatabase方法.该方法从我知道已更改的表中删除所有行,然后加载一个平面XML数据集,其中包含我需要保持为真的数据.完成后,我运行正在测试的所有代码.最后,我使用一组简单的方法从数据库中 Select 行,以断言我所做的更改是否正确完成.

我不会说这是最好的做法,但对我来说效果很好.我遇到的唯一问题是每次模式更改时都必须对XML数据集进行查找和替换,并且由于所有的删除和插入操作,测试运行缓慢.

Zend Framework有一个针对PHPUnit的有趣的库,它允许对平面XML数据集进行compare a database table次测试,但是我还没有机会使用它.

Database相关问答推荐

为多个列 Select 最新的非空值

Active Record - 获取数据库中的第二个、第三个.. 项(无 ID)

如果我使用存储过程,我对 SQL 注入免疫吗?

WAMP 的 MySQL 数据库文件位于何处?

在 PostgreSQL 触发函数中使用 pg_notify

外键可以作为主键吗?

Spring 的 JdbcTemplate 是否在查询超时后关闭连接?

使用 java 查询 MySQL 数据库

在 PostgreSQL 中使用 pg_notify(text, text) 监听/通知

JavaScript 布尔搜索查询生成器接口库?

多语言数据库,默认回退

单父实体的核心数据性能

使用 JSON 作为存储/传输格式的数据库

在现有数据库上使用 liquibase

如何将 DECIMAL 插入 MySQL 数据库

表格字段可以包含连字符吗?

Django + PostgreSQL:如何重置主键?

复式记账的关系数据模型

如何对彼此接近的纬度/经度点进行分组?

什么是提交日志(log)?