使用多个数据库驱动程序运行PHP单元测试

时间:2018-08-06 14:43:48

标签: php database pdo phpunit drivers

在我正在编写的库中,可以提供用于任何数据持久性的PDO实例。支持多种驱动程序,例如MySQL和SQLite。该库本身包含一些执行SQL查询的文件,我想对其进行测试(使用phpUnit)。因此,我想运行一个常规的(独立于驱动程序的)单元测试,每个驱动程序一次。

Internet并没有给我带来明确的最佳实践解决方案,因此,到目前为止,这些是我提出的方法:

  1. 使用带['mysql','sqlite']的dataProvider并对此进行测试;但是它的用法将仅限于一个测试功能,我不喜欢。
  2. setUpBeforeClass中为每个驱动程序设置每个数据库连接,并在每个测试循环中通过这些驱动程序进行测试。从OOP的角度来看,这也不是一个好的选择,更不用说必须同时建立到不同驱动程序的多个连接,这可能会占用大量资源。
  3. 使用抽象的setupConnection()方法创建抽象的通用单元测试类。然后,对于每个必需的驱动程序,可以通过适当的数据库连接来扩展此类。这似乎是最可行的选择,但是要用这种方法测试许多文件/类(超过10个。虽然不是很多,但足够多),但这对于解决此问题是一种乏味而肮脏的方法。

理想情况下,我寻求一种方法来对phpunit'使用这些驱动程序运行此单元测试文件'表示。完全有可能做到这一点吗?否则,有什么替代方案?

0 个答案:

没有答案