2017-08-17 91 views
0

不幸的是,我不能在我的項目中使用作曲家。 它使用Zend框架1與成千上萬的PHPUnit的PHPUnit測試5. 現在我想端口(遷移)他們PHPUnit的6如何使PHPUnit_Extensions_Database_DB_DefaultDatabaseConnection在PhpUnit 6上工作?如何爲DBUnit 3類創建別名?

聲明:

<?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 connectd顯示我好消息:

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

有什麼不對?

+0

那麼,錯誤信息是什麼? – localheinz

+0

未找到類'PHPUnit \ DbUnit \ Database \ DefaultConnection' –

回答

0

我找到了解決方案。 問題是我在初始化此擴展之前使用了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(); 
}