代码之家  ›  专栏  ›  技术社区  ›  Eugene Kaurov

如何使PHPUnit\u Extensions\u Database\u DB\u DefaultDatabaseConnection在PHPUnit 6上工作?如何为DBUnit 3类创建别名?

  •  0
  • Eugene Kaurov  · 技术社区  · 7 年前

    它使用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
    

    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 回复  |  直到 7 年前
        1
  •  0
  •   Eugene Kaurov    7 年前

    我找到了解决办法。 我只是将其移动到包含的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();
    }