[Moscow.pm] Хуки при выполнении тестов

Vladimir Timofeev vovkasm на gmail.com
Ср Мар 14 23:15:40 PDT 2012


14 марта 2012 г. 23:28 пользователь Тимур Нозадзе
<timur.nozadze на gmail.com> написал:
> Добрый день.
>
> Есть некий модуль с набором тестов.
> Перед прогоном тестов и после их завершения нужно выполнять некие
> инициализирующие/финализирующие действия, например, распаковать
> какие-нибудь данные, нужные для тестирования, а потом их удалить.
> Хочется, чтобы эти действия выполнялись ровно один раз, как при
> прогоне нескольких тестов через Test::Harness/TAP::Harness, так и при
> прямом запуске какого-нибудь одного тестового скрипта.
>
> Нет ли каких-нибудь готовых средств для подобной задачи? Поиск по CPAN
> пока ничего не дал.
>

Здесь уже писали, это не самый лучший способ держать общие тестовые
данные на несколько тестов, это будет работать, только если эти данные
не меняются.
Готового решения вы не найдете, скорей всего, ведь тестовый файл - это
по определению просто исполняемый файл (не обязательно даже на перле),
который выдает в STDOUT данные в соответствии с TAP протоколом.

Но сделать то, что вы хотите не так сложно, видится два варианта:
1.
t/lib/TestUtil.pm - в нем весь общий код на тему инициализации и
очистки тестовых данных
t/00_init_env.t - инициализирует тестовые данные и создает файл
test_env.lock (к примеру)
t/*.t в них что-то вроде BEGIN { -e 'test_env.lock' ||
TestUtil::init_test_env() } и аналогично с END
t/99_clean_env.t - чистит тестовые данные
как-то так...

2. Если тестов становится много, можно конвертнуться в Test::Class...
(там можно сделать общий setup/teardown)

-- 
Vladimir Timofeev <vovkasm на gmail.com>


Подробная информация о списке рассылки Moscow-pm