Модули, предназначенные для собственного внутреннего использования удобнее разработывать/тестировать/сопровождать, когда тесты и код хранятся в одном файле. Можно сделать так, чтобы если модуль компилируется
perl Module.pm
то выполняются тесты, а если модуль используется в программе
use Module;
то не тесты не выполняются. Делается это так.
package Module;
...
TestModule() unless ( caller(0) ); # запуск perl Module
...
#----------------------------------------------------------
# модульное тестирование
sub TestModule {
eval("use Test::More tests => 17");
...
isnt(...);
}
eval нужен для того, чтобы при использовании метода в use не печатался план тестирования.
Похожие записи