如果重写setUp和tearDown,则不会调用PHP,phpunit和dbunit - getConnection和getDataSet
Posted
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了如果重写setUp和tearDown,则不会调用PHP,phpunit和dbunit - getConnection和getDataSet相关的知识,希望对你有一定的参考价值。
我正在使用现有的phpunit测试套件,并尝试合并dbunit。特别是,我想使用dataSet抽象来加载fixture数据并在我之后进行清理。我已将PHPUnit_Extensions_Database_TestCase_Trait特性添加到测试用例中,并实现了函数getConnection和getDataSet。但是,这些方法只能由特征的默认setUp和tearDown方法调用。我的许多测试都定义了自己的setUp和tearDown方法。有不同的地方,我应该把这个现有的setUp / tearDown代码,以便我不必从特征覆盖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();
}
}
答案
好的,这是一个特例:
How to override trait function and call it from the overridden function?
所以,我修改了我的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();
}
以上是关于如果重写setUp和tearDown,则不会调用PHP,phpunit和dbunit - getConnection和getDataSet的主要内容,如果未能解决你的问题,请参考以下文章
任何关于如何在 PHPUnit 中使用 setUp() 和 tearDown() 的真实例子?