2010-02-04 5 views
14

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

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

ответ

14

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

% 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"; 
+0

Спасибо, это было действительно просто. – John

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

Смежные вопросы