如何将 PHPUnit 的 DBUnit 与 Microsoft SQL Server 数据库一起使用?

Posted

技术标签:

【中文标题】如何将 PHPUnit 的 DBUnit 与 Microsoft SQL Server 数据库一起使用?【英文标题】:How can I use PHPUnit's DBUnit with a Microsoft SQL Server database? 【发布时间】:2017-09-16 05:44:53 【问题描述】:

我正在使用 phpUnit 和 DBUnit 为在命令行上运行并将数据插入 Microsoft SQL Server 数据库的 PHP 应用程序创建测试。

DBUnit 文档 (https://phpunit.de/manual/current/en/database.html#database.supported-vendors-for-database-testing) 声明 Microsoft SQL Server 不受支持,但可以通过 Zend Framework 或 Doctrine 2 访问。

当我尝试时:

 $pdo = new PDO( "odbc:Driver=ODBC Driver 13 for SQL Server;Server=redacted", $user, $passwd );

 $this->createDefaultDBConnection($pdo, $db);

毫不奇怪,我收到以下错误:

PHPUnit_Extensions_Database_Exception: Could not find a meta data driver for odbc pdo driver.

我找到了 Zend Framework 文档,该文档展示了如何使用 PHPUnit 编写与关系数据库相关的测试 (https://framework.zend.com/manual/1.10/en/zend.test.phpunit.db.html),如果我对 Zend 有更好的理解,我想我可以让它工作,所以我需要的可能是一些帮助理解如何在不编写整个 Zend 应用程序的情况下访问 Zend 类。

但也许有一些非 Zend 方法可以做到这一点。

【问题讨论】:

【参考方案1】:

如果您的问题是 PDO 连接,我建议您尝试使用与 SQL Server Driver for PHP 捆绑的 pdo_sqlsrv 驱动程序。您必须使用的连接字符串如下所示:

new PDO("sqlsrv:Server=localhost;Database=testdb", "UserName", "Password");

【讨论】:

谢谢。不幸的是,看起来 PHP 的 SQL Server 驱动程序不适用于 RHEL6。即使是这样,我认为这并不意味着它可以与 DBUnit 一起使用,它明确地只适用于 mysql、PostgreSQL、Oracle 和 SQLite。我已经使用 MS ODBC Driver 13 为我的主要代码建立了成功的 PDO 连接,但是 PHPUnit 的 DBUnit 包似乎正在检查驱动程序并且只允许它支持的驱动程序。

以上是关于如何将 PHPUnit 的 DBUnit 与 Microsoft SQL Server 数据库一起使用?的主要内容,如果未能解决你的问题,请参考以下文章

PHPUnit 和 DBUnit - 入门 [关闭]

在 PHPUnit/DBUnit 中设置外键约束

phpunit 中的 dbunit 不会截断表

如果重写setUp和tearDown,则不会调用PHP,phpunit和dbunit - getConnection和getDataSet

为啥我应该避免使用 DbUnit 来测试 MySQL?

xampp phpunit 怎么使用