首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >phpunit中的dbunit不截断表?

phpunit中的dbunit不截断表?
EN

Stack Overflow用户
提问于 2018-04-24 08:02:56
回答 2查看 0关注 0票数 0

我目前正在使用PHPUnit和DBUnit作为我的项目。我在DBUnit中有一个问题,因为DBUnitPHPUnit_Extensions_Database_TestCaseSrc类似乎没有截断测试db上的现有数据。因此,这使我的插入测试失败后,只工作了一次。

我正在使用MySQL,下面是我的代码:

abstract class Generic_Tests_DatabaseTestCase extends PHPUnit_Extensions_Database_TestCase
{
    // only instantiate pdo once for test clean-up/fixture load
    static private $pdo = null;

    // only instantiate PHPUnit_Extensions_Database_DB_IDatabaseConnection once per test
    private $conn = null;

    final public function getConnection()
    {
        if ($this->conn === null) {
            if (self::$pdo == null) {
                self::$pdo = new PDO( "mysql:dbname=db;host=localhost", "root", "pass" );
            }
            $this->conn = $this->createDefaultDBConnection(self::$pdo, "db");
        }

        return $this->conn;
    }
}

class DbopTest extends Generic_Tests_DatabaseTestCase
{       
    private $db;

    protected function setup(){
        $this->db = null;
    }

    public function getDataSet(){
        return $this->createMySQLXMLDataSet(dirname(__FILE__) . '/../rows.xml');
    }       
    ...
}
EN

回答 2

Stack Overflow用户

发布于 2018-04-24 16:18:17

如果覆盖setUp方法时,PHPUnit不会自动调用getDataSet方法。你得小心调用parent::setUp方法,否则PHPUnit不知道该做什么;

票数 0
EN

Stack Overflow用户

发布于 2018-04-24 17:33:22

只需在TestCase类中添加以下内容即可。

protected function getTearDownOperation()
{
    return \PHPUnit_Extensions_Database_Operation_Factory::TRUNCATE();
}

在此之前,我在Teardown()方法中手动截断表,但我认为你会同意这个解决方案。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/-100008249

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档