PHPUnit和DBUnit - 入门

Ale*_*x C 10 php phpunit dbunit

有没有人有关于如何开始将DBUnit层添加到我的PHPUNit测试的好的,有用的教程或书籍的链接?

我试过跟随代码

protected function getDatabaseTester()
{
    $pdo = new PDO('mysql:host=localhost;dbname=test', 'user', 'pass');
    $connection = new PHPUnit_Extensions_Database_DB_DefaultDatabaseConnection($pdo);
    $tester = new PHPUnit_Extensions_Database_DefaultTester($connection);
    $tester->setSetUpOperation(PHPUnit_Extensions_Database_Operation_Factory::CLEAN_INSERT());
    $tester->setTearDownOperation(PHPUnit_Extensions_Database_Operation_Factory::NONE());
    /*
    * the next line fails with the error

    PHP Fatal error:  __autoload(): Failed opening required 'PHPUnit_Extensions_Database_DataSet_FlatXMLDataSet.php' (include_path= *** 

    */
    $tester->setDataSet(new PHPUnit_Extensions_Database_DataSet_FlatXMLDataSet(dirname(__FILE__).'/../../../files/xml_database_export.xml'));
    return $tester;
}
Run Code Online (Sandbox Code Playgroud)

XML是通过mysqldump命令创建的.我很乐意使用CSV,甚至是内存中的数组(无论什么工作)

不幸的是,我似乎无法启动此系统.

Gor*_*don 9

PHPUnit手册中有一章数据库测试:

和B. Eberlei使用PHPUnit进行数据库测试的终极指南

PHPUnit的作者塞巴斯蒂安·贝格曼(Sebastian Bergmann)也就此主题发表了一篇博客文章(2008年):

一些甚至更老的博客文章由Mike Lively撰写,作者DbUnit扩展可以在

最新的教程(2010年)将出现在Matthew Turland的博客中:

您也可以访问Freenode IRC上的#phpunit以获得官方支持.

  • 经过大量的时间学习DbUnit之后,我希望有人告诉我它基本上只是`TRUNCATE`s(擦除)一个表并用你从XML提供的自定义数据填充它.显然,就是这样.没有神奇的持久连接,没有阿凡达式的成长和梦想世界,并且通过临时数据集嬉戏.在一天结束的时候,我可以用"CREATE TEMPORARY TABLE"做同样的事情,因为它保持了关系,所以更好.所以我想说"不要浪费你的时间与这个蹩脚的延伸",但由于我的经验有限,我不会. (2认同)