Как заставить PHPUnit_Extensions_Database_DB_DefaultDatabaseConnection работать на PhpUnit 6? Как создать псевдоним для классов DBUnit 3?

К сожалению, я не могу использовать композитор в моем проекте. Он использует Zend Framework 1 с тысячами тестов phpUnit для PhpUnit 5. Теперь я хочу перенести (перенести) их в 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

Но при попытке доступа к любому методу DbUnit в testbootstrap.php:

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');

В чем дело?

1 ответ

Решение

Я нашел решение. Проблема заключалась в том, что я использовал отображение классов DbUnit до инициализации этого расширения. Я просто переместил его в 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();
}
Другие вопросы по тегам