PHPUnit5.0中文手册8. 数据库测试数据库测试的四个阶段

数据库测试的四个阶段

Gerard Meszaros 在他的书《xUnit 测试模式》中列出了单元测试的四个阶段:

  1. 建立基境(fixture)

  2. 执行被测系统

  3. 验证结果

  4. 拆除基境(fixture)

什么是基境(fixture)?

基境(fixture)是对开始执行某个测试时应用程序和数据库所处初始状态的描述。

对数据库进行测试至少要处理建立与拆除的步骤,在其中完成清理工作,并将所需的基境数据写入表内。因而,对于数据库扩展模块而言,在数据库测试中有很好的理由将这四个步骤还原成类似下面这样的工作流程,这个流程对于每个测试都会完整执行:

1. 清理数据库

由于总是会有某个测试运行在并不确定表中是否有数据的数据库上,PHPUnit 在所有指定表上执行 TRUNCATE 操作来把它们清空。

2. 建立基境

PHPUnit 随后将迭代所有指定的基境数据行并将其插入到对应的表里。

3–5. 运行测试、验证结果、并拆除基境

在所有数据库都完成重置并加载好初始状态后,PHPUnit 才会执行实际的测试。这个部分的测试代码完全不需要数据库扩展模块的参与,可以随意测试任何想要测试的内容。

在测试中,验证的目的可以使用一个名为 assertDataSetsEqual() 的特殊断言来实现。当然,这完全是可选的。这个特性将在“数据库断言”一节中进行解说。