Как я могу запустить только конкретный тест в дистрибутиве Perl?
Этот вопрос связан с этим вопросом, который я задал до. У меня есть несколько тестовых файлов (A.t, B.t, C.t и т.д.), Созданных для тестирования их соответствующих модулей A, B, C и т.д. Но когда я делаю тест-тест, он запускает все тесты. Но, когда я работаю над определенным модулем, скажу B, я бы хотел запустить модульные тесты для этого модуля. После того, как я покончу с моими изменениями, я запустил весь пакет.
Итак, есть ли способ сделать как make test B
, который будет запускать только тесты с использованием B.t? И когда я говорю что-то вроде "make test all", он запускает все тесты под "t" dir? Спасибо.
Ответы
Ответ 1
Я просто запускаю тест, который я хочу запустить:
% make; perl -Mblib t/B.t
Вы также можете сделать то же самое с prove
.
Это -Mblib
загружает модуль blib, который просто добавляет blib/lib (и различные специальные каталоги под ним) в @INC
для вас. Он поставляется с Perl. prove
должен делать то же самое с переключателем -b
.
Моя команда состоит из двух частей: make
(или ./Build
для Module::Build. Это создает источник и перемещается Perl-модули и другие файлы в "сборную библиотеку" или blib в качестве промежуточного этапа в полной установке. Обычно make test
работает с версиями в blib и обновляет это для меня. Поскольку я тестирую самостоятельно, я убедитесь, что я обновляю blib самостоятельно и включаю его в путь поиска модуля Perl.
Несмотря на то, что я знаю все это, вы можете быть удивлены, что я часто забываю сделать один из этих шагов и в конечном итоге тестировать неправильную версию вещей, будь то полностью установленная старая версия (забыли -Mblib
) или старые источники развития (забыли make
). Это приводит меня к отладкам, например:
print "No really, this is the Foo version. kthnxbye\n";
Ответ 2
Выполнение тестов непосредственно через perl
работает. Команда prove
была разработана для упрощения процесса, сохранения нажатий клавиш и сокращения цикла тестирования-отладки.
prove
был разработан для работы с несколькими тестами за раз, которые вы не можете вызвать с помощью perl
. Например, вы можете:
prove t/*.t
prove t/ # Same as t/*.t
prove t/dev/ # Run only tests in t/dev/
prove -r t/ # Runs all .t files in t/ and any directories below.
Современный prove
также имеет множество функций для обработки наборов тестов и изменения того, как отображается вывод TAP из тестов.
prove --help
покажет вам все параметры prove
, а prove --man
покажет вам страницу руководства.