С PHPUnit, как запустить код инициализации перед выполнением каких-либо тестов? - PullRequest
9 голосов
/ 11 ноября 2011

В настоящее время мы запускаем код для настройки базы данных в setUpBeforeClass. Однако это выполняется перед каждым тестовым классом. Можно ли выполнить код один раз перед выполнением каких-либо тестов, и, возможно, выполнить некоторый код, когда все тесты также завершены?

Ответы [ 3 ]

13 голосов
/ 11 ноября 2011

Это именно то, для чего предназначен файл начальной загрузки. По умолчанию PHPUnit выполнит код в bootstrap.php в текущем каталоге. Вы можете использовать файл конфигурации phpunit.xml или параметр командной строки --bootstrap, чтобы указать другой файл.

Этот файл выполняется ровно один раз, прежде чем пытаться найти тесты для запуска. Он позволяет настроить путь включения, автозагрузчик, константы и т. Д. Перед созданием или выполнением каких-либо тестов.

0 голосов
/ 11 ноября 2011

Я согласен с комментарием Криса, что вы хотите избежать такого поведения, но если вам нужно, возможно, вы могли бы сделать что-то вроде этого:

class My_PHPUnit_Framework_TestCase extends PHPUnit_Framework_TestCase {
    function __construct() {
       parent::__construct();
       // Insert your one time setup scripts here
    }
}

Затем убедитесь, что ваши тесты расширяют My_PHPUnit_Framework_TestCase вместо PHPUnit_Framework_TestCase.

0 голосов
/ 11 ноября 2011

Почему вы хотите это сделать?Модульные тесты должны быть независимы друг от друга, и, следовательно, все предварительные условия также должны быть восстановлены до одного и того же состояния перед каждым тестом.

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

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