如何让 PHPUnit_Extensions_Database_DB_DefaultDatabaseConnection 在 PhpUnit 6 上工作?如何为 DBUnit 3 类 创建别名?
How to make PHPUnit_Extensions_Database_DB_DefaultDatabaseConnection work on PhpUnit 6? How to create an alias for DBUnit 3 classes?
很遗憾,我无法在我的项目中使用 Composer。
它使用 Zend Framework 1 以及针对 PhpUnit 5 的数千个 phpUnit 测试。
现在我想将它们移植(迁移)到 PhpUnit 6。
声明:
<?xml version="1.0" encoding="UTF-8"?>
<phpunit xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="https://schema.phpunit.de/6.0/phpunit.xsd"
bootstrap="testbootstrap.php"
extensionsDirectory="./extensions">
扩展已成功连接,因为 --verbosed 向我显示了良好的消息:
PHPUnit 6.3.0 by Sebastian Bergmann and contributors.
Runtime: PHP 7.0.22 with Xdebug 2.5.5
Configuration: /tests/phpunit/phpunit.xml
Extension: phpunit/dbunit 3.0.0
但是当试图访问 testbootstrap.php 中 DbUnit 的任何方法时:
class_alias('PHPUnit\DbUnit\Database\DefaultConnection', 'PHPUnit_Extensions_Database_DB_DefaultDatabaseConnection');
我看到一个错误:
PHP Warning: Class 'PHPUnit\DbUnit\Database\DefaultConnection' not found in /tests/phpunit/testbootstrap.php on line 94
Fatal error: Class 'PHPUnit_Extensions_Database_DB_DefaultDatabaseConnection' not found in /library/Zend/Test/PHPUnit/Db/Connection.php on line 44
尽管它对 PhpUnit 本身工作正常:
class_alias('PHPUnit\Framework\Test', 'PHPUnit_Framework_Test');
怎么了?
我找到了解决办法。
问题是我在初始化此扩展之前使用了 DbUnit class 映射。
我只是将它移动到包含的 trait:
中的 setUpBeforeClass()
public static function setUpBeforeClass()
{
if (
method_exists('PHPUnit\Runner\Version', 'id') && version_compare(PHPUnit\Runner\Version::id(), '6', '>=')
) {
class_alias('PHPUnit\DbUnit\Database\DefaultConnection', 'PHPUnit_Extensions_Database_DB_DefaultDatabaseConnection');
}
return parent::setUpBeforeClass();
}
很遗憾,我无法在我的项目中使用 Composer。 它使用 Zend Framework 1 以及针对 PhpUnit 5 的数千个 phpUnit 测试。 现在我想将它们移植(迁移)到 PhpUnit 6。
声明:
<?xml version="1.0" encoding="UTF-8"?>
<phpunit xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance"
xsi:noNamespaceSchemaLocation="https://schema.phpunit.de/6.0/phpunit.xsd"
bootstrap="testbootstrap.php"
extensionsDirectory="./extensions">
扩展已成功连接,因为 --verbosed 向我显示了良好的消息:
PHPUnit 6.3.0 by Sebastian Bergmann and contributors.
Runtime: PHP 7.0.22 with Xdebug 2.5.5
Configuration: /tests/phpunit/phpunit.xml
Extension: phpunit/dbunit 3.0.0
但是当试图访问 testbootstrap.php 中 DbUnit 的任何方法时:
class_alias('PHPUnit\DbUnit\Database\DefaultConnection', 'PHPUnit_Extensions_Database_DB_DefaultDatabaseConnection');
我看到一个错误:
PHP Warning: Class 'PHPUnit\DbUnit\Database\DefaultConnection' not found in /tests/phpunit/testbootstrap.php on line 94
Fatal error: Class 'PHPUnit_Extensions_Database_DB_DefaultDatabaseConnection' not found in /library/Zend/Test/PHPUnit/Db/Connection.php on line 44
尽管它对 PhpUnit 本身工作正常:
class_alias('PHPUnit\Framework\Test', 'PHPUnit_Framework_Test');
怎么了?
我找到了解决办法。 问题是我在初始化此扩展之前使用了 DbUnit class 映射。 我只是将它移动到包含的 trait:
中的 setUpBeforeClass()public static function setUpBeforeClass()
{
if (
method_exists('PHPUnit\Runner\Version', 'id') && version_compare(PHPUnit\Runner\Version::id(), '6', '>=')
) {
class_alias('PHPUnit\DbUnit\Database\DefaultConnection', 'PHPUnit_Extensions_Database_DB_DefaultDatabaseConnection');
}
return parent::setUpBeforeClass();
}