常见问题(FAQ)
最后更新于:2022-04-01 03:45:44
# 常见问题(FAQ)
### PHPUnit 会为每个测试(重新)创建数据库吗?
不,PHPUnit 要求在测试套件开始时所有数据库对象必须全部可用。数据库、表、序列、触发器还有视图,必须全部在运行测试套件之前创建好。
[Doctrine 2](http://www.doctrine-project.org) 或 [eZ Components](http://www.ezcomponents.org) 拥有强力的工具,可以按预定义的数据结构创建数据库,但是这些都必须和 PHPUnit 扩展模块对接之后才能自动在整个测试套件运行之前重新创建数据库。
由于每个测试都会彻底清空数据库,因此无须为每个测试重新创建数据库。持久可用的数据库同样能够完美工作。
### 为了让数据库扩展模块正常工作,需要在应用程序中使用 PDO 吗?
不,只在基境的清理与建立阶段还有断言检定时用到PDO。在你的自有代码中,可以使用任意数据库抽象。
### 如果看到 “Too much Connections” 错误该怎么办?
如果没有对 TestCase 中 `getConnection()` 方法所创建 PDO 实例进行缓存,那么每个数据库测试都会增加一个或多个数据库连接。MySQL的默认配置只允许100个并发连接,其他供应商的数据库也都有各自的最大连接限制。
子章节 “使用你自己的抽象数据库 TestCase 类”展示了如何通过在所有测试中使用单个PDO实例缓存来防止发生此错误。
### Flat XML / CSV 数据集中如何处理 NULL?
别这么干。应当改用 XML 或者 YAML 数据集。