我目前正在使用PHPUnit和DBUnit作为我的项目。我在DBUnit中有一个问题,因为DBUnitPHPUnit_Extensions_Database_TestCase
Src类似乎没有截断测试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');
}
...
}
发布于 2018-04-24 16:18:17
如果覆盖setUp
方法时,PHPUnit不会自动调用getDataSet
方法。你得小心调用parent::setUp
方法,否则PHPUnit不知道该做什么;
发布于 2018-04-24 17:33:22
只需在TestCase类中添加以下内容即可。
protected function getTearDownOperation()
{
return \PHPUnit_Extensions_Database_Operation_Factory::TRUNCATE();
}
在此之前,我在Teardown()方法中手动截断表,但我认为你会同意这个解决方案。
https://stackoverflow.com/questions/-100008249
复制相似问题