使用dbUnit进行数据库测试

时间:2016-05-09 19:20:10

标签: php phpunit composer-php dbunit php-5.4

我正在尝试使用php单元执行一些数据库测试,但我不断收到以下错误: following errors:

我的composer.json看起来像这样:

{
    "require": {
    "phpunit/phpunit": "4.8",
    "phpunit/dbunit": "^2.0"
}

这是我正在尝试执行测试的页面:

<?php 
require_once 'autoload.php';

class testDatabase extends \PHPUnit_Extensions_Database_TestCase {


public function getConnection() {
    $db = new PDO(
        "mysql:host=localhost;dbname=mrf", 
        "", "");
    return $this->createDefaultDBConnection($db, "bulletproof");
}

}
?>

我使用sql自动加载器加载主要的php类,如下所示:

<?php 
spl_autoload_register(function($class) {
    require_once '../classes/' . $class . '.php';
});
?>

在我看来,奇怪的是常规的phpunit测试确实运行,但dbUnit测试没有。我尝试了几次从packagist下载的作曲家,phpUnit和dbUnit的升级,但没有成功。

如果你可以帮助我,那会很棒 提前谢谢。

1 个答案:

答案 0 :(得分:1)

当您运行composer install时,编辑器会生成文件PROJECT_ROOT/vendor/autoload.php。该文件包含自动加载项目依赖项所需的所有内容,因此根据我在屏幕截图中看到的内容,您需要require_once以及您自己的内容。

作为旁注:phpunit有一个选项--bootstrap=filename,它在所有测试运行之前执行。你可以运行

phpunit --bootstrap=PROJECT_ROOT/vendor/autoload.php databaseTest.php

之后你可以创建像phpunit_bootstrap.php这样的东西,把你的require_once 'autoload.php';放在这里和作曲家vendor / autoload.php这样你就可以运行像

这样的测试
phpunit --bootstrap=path/to/your/phpunit_bootstrap.php AnythingYouWantToTest.php

无需在每个测试文件中插入require_once 'autoload.php';