PHPUnit и Selenium: setUpBeforeClass () не вызывается - PullRequest
3 голосов
/ 15 марта 2011

Я хочу использовать 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 Ответ

4 голосов
/ 16 марта 2011

Я не смог найти ничего в документации, но код, похоже, согласен с вами.

В 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()

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...