Настройка PHPUnit перед запуском первого теста и удаление после запуска последнего теста

Я пытаюсь реализовать похожую на Django тестовую утилиту для php-приложения, используя PHPUnit. Под Django я подразумеваю, что отдельная тестовая БД создается из основной базы данных перед запуском первого теста и удаляется после запуска последнего теста.Тестовую базу данных необходимо создать только один раз, даже если одновременно выполняется много тестовых случаев.

Для этого я применил следующий подход:

я определил собственный класс комплекта тестов, чтобы я мог написать код для создания и удаления базы данных в ее методах установки и удаления, а затем использовать этот класс для запуска тестов. следующим образом

$ phpunit MyTestSuite

MyTestSuite определяет статический метод с именем suite, где я просто использую globи добавляю тесты в набор тестов следующим образом

public static function suite() {
    $suite = new MyTestSuite();

    foreach (glob('./tests/*Test.php') as $tc) {
        require_once $tc;
        $suite->addTestSuite(basename($tc, '.php'));
    }

    return $suite;
}

Все классы Test Case происходят от подкласса PHPUnit_Framework_TestCase, а также методы установки и отключения этого класса заботятся о загрузке и очистке исходных данных из файлов приспособлений json.

Теперь, когда нет. тестов увеличивается, мне нужно запускать только выбранные тесты за раз. Но поскольку я уже загружаю тесты с помощью набора тестов, параметр --filter использовать нельзя. Это заставляет меня чувствовать, что этот подход, возможно, не был правильным.

Итак, мой вопрос: как правильно сделать что-то перед запуском первого теста и после запуска последнего теста, независимо от того, как их находит PHPUnit?

PS: я использую не PHPUnit_Extensions_Database_TestCase, а свою собственную реализацию создания, заполнения и удаления базы данных.

20
задан Benjamin 23 May 2014 в 10:07
поделиться