使用PHPUnit进行数据库测试的最佳实践

Jos*_*ith 24 php mysql database phpunit unit-testing

PHPUnit自己的手册有一些尚未写的部分,名为"操作"和"数据库测试最佳实践".

用于测试数据库的最佳实践是什么PHPUnit,特别是在MySQL

Dav*_*her 9

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

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

Zend Framework有一个有趣的PHPUnit库,允许测试将数据库表与平面XML数据集进行比较,但我还没有机会使用它.