Как я могу запустить только определенный тест в дистрибутиве Perl? - PullRequest
14 голосов
/ 05 февраля 2010

Этот вопрос относится к этому вопросу, который я задавал ранее . У меня есть несколько тестовых файлов (A.t, B.t, C.t и т. Д.), Созданных для тестирования их соответствующих модулей A, B, C и так далее. Но когда я делаю пробный тест, он запускает все тесты. Но когда я работаю над конкретным модулем, скажем, B, я бы хотел запустить модульные тесты для этого модуля. После того, как я закончу со своими изменениями, я буду запускать весь пакет.

Так есть ли способ сделать как make test B, который будет запускать только тесты с использованием B.t? И когда я говорю что-то вроде «make test all», он запускает все тесты под «t» dir? Спасибо.

Ответы [ 2 ]

15 голосов
/ 05 февраля 2010

Я просто запускаю тест, который хочу запустить:

 % 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 голосов
/ 20 мая 2015

Выполнение тестов напрямую через perl работает. Команда prove была разработана для упрощения процесса, сохранения нажатий клавиш и сокращения цикла test-debug-test.

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 покажет вам страницу руководства.

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