PHP、phpunit 和 dbunit - getConnection 和 getDataSet 如果 setUp 和 TearDown 被覆盖,则不会调用



我正在使用现有的phpunit测试套件,并尝试合并dbunit。特别是,我想使用数据集抽象来加载灯具数据并在我之后清理。我已将phpunit_extensions_database_testcase_trait特征添加到测试用例中,并实现了函数getConnection和getDataset。但是,这些方法仅通过特征的默认设置和拆卸方法来调用。我的许多测试都有自己的设置和拆卸方法定义。我应该将这个现有的设置/拆卸代码放置在某个地方,以便我不必覆盖特征的设置和拆除?参考代码:

  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();
}

最新更新