PHP、phpunit和dbunit-getConnection和getDataSet-don';如果覆盖了安装和拆卸,则不会调用
我正在使用一个现有的phpunit测试套件,并尝试合并dbunit。特别是,我想使用数据集抽象来加载夹具数据并在我之后进行清理。 我已经在测试用例中添加了PHPUnit_扩展_数据库_TestCase_Trait特征,并实现了函数getConnection和getDataSet。但是,这些方法只能由trait的默认setUp和tearDown方法调用。我的许多测试都定义了自己的设置和拆卸方法。 我是否应该将这个现有的安装/拆卸代码放在不同的地方,这样我就不必重写这个特性的安装和拆卸? 参考代码:PHP、phpunit和dbunit-getConnection和getDataSet-don';如果覆盖了安装和拆卸,则不会调用,php,phpunit,Php,Phpunit,我正在使用一个现有的phpunit测试套件,并尝试合并dbunit。特别是,我想使用数据集抽象来加载夹具数据并在我之后进行清理。 我已经在测试用例中添加了PHPUnit_扩展_数据库_TestCase_Trait特征,并实现了函数getConnection和getDataSet。但是,这些方法只能由trait的默认setUp和tearDown方法调用。我的许多测试都定义了自己的设置和拆卸方法。 我是否应该将这个现有的安装/拆卸代码放在不同的地方,这样我就不必重写这个特性的安装和拆卸? 参考代码:
class FooTest extends \PHPUnit_Framework_TestCase {
use PHPUnit_Extensions_Database_TestCase_Trait;
static private $pdo = null;
private $conn = null;
public function testTrueIsTrue() {
$foo = true;
$this->assertTrue($foo);
}
public function setUp() {
error_log("in setUp");
}
public function tearDown() {
error_log("in tearDown");
}
public function getConnection() {
error_log("in getConnection");
return $this->createDefaultDBConnection();
}
/**
* @return PHPUnit_Extensions_Database_DataSet_IDataSet
*/
public function getDataSet() {
error_log("in getDataSet");
return new PHPUnit_Extensions_Database_DataSet_DefaultDataSet();
}
}
这是一个特殊的例子: 因此,我修改了我的
use
语句:
use PHPUnit_Extensions_Database_TestCase_Trait {
setUp as protected defaultSetUp;
tearDown as protected defaultTearDown;
}
并添加了对默认方法的调用:
public function setUp() {
$this->defaultSetUp();
error_log("in setUp");
}
public function tearDown() {
error_log("in tearDown");
$this->defaultTearDown();
}
因此,从覆盖方法
parent::setUp()运行父方法
作为setUp()
方法等的第一行,我想调用trait添加的setUp和tearDown方法,而不是从父级继承的方法。