PHPUnit和Selenium:未调用setUpBeforeClass()

时间:2011-03-15 19:13:57

标签: php selenium phpunit

我想使用setUpBeforeClass()来设置数据库连接,并进行一些日志记录,但是在我的测试执行之前(或者根本就没有)调用它。 我有以下内容:

class TestSetup extends PHPUnit_Extensions_SeleniumTestCase {
    public static function setUpBeforeClass() {
        //do some setup stuff here for all my tests
    }
    protected function setUp() {
        $this->setBrowserUrl('http://' . $this->deviceIp);
    }
    protected function testOne() {
        //do a test here
    }
    protected function testTwo() {
        //do a test here
    }
}

我做了一些深入研究PHPUnit / Frameworks / TestSuite.php,并确认在660行,$ this-> testCase是bool(false)。但我无法弄清楚它是否应该是真的或应该发生在哪里(除了在__construct()中)。

我在这里稍微偏头,所以任何帮助都会非常感激。

如果我能提供任何其他有用的信息,请告诉我。

约什

1 个答案:

答案 0 :(得分:4)

我在文档中找不到任何内容,但代码似乎与您同意。

PHPUnit/Extensions/SeleniumTestCase.php run方法(第289行)中,没有调用setUpBeforeClass(或任何其他方法可能会这样做)的迹象。

如果您考虑到这个问题,我建议您在phpunits issue tracker上开票。

对于解决方法,您可以在setUp中使用静态属性,如下所示:

protected function setUp() {
    static $db = null;
    if($db === null) {
        $db = whatevery_you_do_there();
    }
    $this->db = $db;
}

应该有用,好像你在setUpBeforeClass()

中运行它一样