Конечно, вы можете тестировать скрипты используя Test :: More . Это просто сложнее, потому что большинство сценариев нужно будет запускать как отдельный процесс, из которого вы получаете выходные данные, а затем проверяете их на ожидаемый результат.
Вот почему modulinos (см. Главу 17 в: Брайан Д Фой , Мастеринг Perl , второе издание, O'Reilly, 2014). Модуль - это скрипт, который также можно использовать как модуль. Это облегчает тестирование, так как вы можете загрузить модуль в свой тестовый скрипт и затем протестировать его функции, как если бы вы работали с обычным модулем.
Ключевой особенностью модуля является следующее:
#! /usr/bin/perl
package App::MyName; # put it in a package
run() unless caller; # Run program unless loaded as a module
sub run {
... # your program here
}
Функция не должна вызываться run
; Вы можете использовать main
, если вы программист на Си. У вас также обычно есть дополнительные подпрограммы, которые run
вызывает по мере необходимости.
Тогда ваши тестовые сценарии могут использовать require "path/to/script"
для загрузки вашего модуля и выполнения его функций. Так как многие сценарии включают в себя написание вывода, и его часто проще печатать по ходу, чем делать print sub_that_returns_big_string()
, может оказаться полезным Test :: Output .