Я пытаюсь реализовать утилиту Django для тестирования для php-приложения, используя PHPUnit. По Django, я имею в виду, что отдельный тестовый db создается из основной базы данных перед запуском первого теста, и он упал после запуска последнего теста. Тестовый db необходимо создать только один раз, даже если одновременно запускается много тестовых случаев.
Для этого я принял следующий подход -
Я определил собственный класс тестового набора, чтобы я мог написать код для создания и удаления db в его методах настройки и удаления, а затем использовать этот класс для запуска тестов следующим образом
$ phpunit MyTestSuite
MyTestSuite определяет статический метод с именем suite
, где я просто использую glob
и добавляю тесты к testuite следующим образом
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 fixture.
Теперь как нет. тестов увеличивается, мне нужно запускать только выбранные тесты за раз. Но поскольку я уже загружаю тесты с помощью набора тестов, опция -filter не может использоваться. Это заставляет меня чувствовать, что этот подход, возможно, не был правильным.
Итак, мой вопрос: какой правильный подход сделать что-то перед запуском первого теста и после запуска последнего теста независимо от того, как PHPUnit находит их?
PS: Я не использую PHPUnit_Extensions_Database_TestCase, но моя собственная реализация создания, заполнения и удаления db.