Как я могу запустить только конкретный тест в дистрибутиве 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 покажет вам страницу руководства.