我正在使用 SimpleTest,一个基于 PHP 的单元测试框架。我正在测试将处理从数据库存储和检索网站评论的新代码。我不知道如何构建项目来测试数据库访问代码。
我正在寻找有关在 PHP 应用程序中测试数据库代码的最佳实践的任何建议。例子真的很棒。进一步阅读的网站很棒。
谢谢你。 :)
最佳答案
这是一个老问题,但我想我会添加一些我们在这方面的具体经验。
其他海报在技术上是正确的,这是一种集成测试形式,但从我的角度来看,MySQL 中的逻辑通常太多,无法在单元测试中删除。如果您像我们一样,拥有严重依赖 MySQL 的大型复杂服务(每个服务通常有多个表),那么拥有一个包含测试查询逻辑的健壮测试框架真的很方便。我们在单元测试中模拟了很多依赖项,但没有模拟 MySQL。
我们有一组包装 simpletest 的类来提供此功能。它的工作原理是这样的:
- 创建每个数据库表的说明存储在
tests/etc/schemas/table.sql
的文件中。它包含模式数据以及测试希望找到的所有固定数据的插入。 - 每个需要数据库的测试都会扩展一个
Test_DbCase
类,该类提供构建表的功能。 - 引导类负责在构造和析构时创建和删除数据库。
- 在运行时,测试在setUp方法中调用
loadTables('foo', 'bar')
来执行foo.sql
和中的sql命令bar.sql
. - 针对固定数据运行测试..其余的是显而易见的。
我们拥有的另一个工具是 bash 脚本,它可以更轻松地创建 table.sql
文件。这真的很方便,否则我们将手动编写 SQL - 您可以使用一组现有的表,在 MySQL 中设置所有数据,然后将其导出以创建基本的测试文件。
这对我们来说非常有效,尽管我们最终不得不自己滚动很多。
关于php - 如何使用 PHP SimpleTest 框架设置数据库测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/175153/