Perl: тестирование читателя ввода?
Есть ли способ автоматически проверить с помощью стандартных модулей Test и т. Д., Правильно ли Perl-программа считывает ввод, например, с STDIN? Например, тестирование программы, которая читает два целых числа из STDIN и печатает их сумму.
2 ответа
Неясно на 100%, что вы имеете в виду, поэтому я предполагаю, что вы хотите написать тестовый скрипт, который тестирует вашу основную программу, которая в рамках теста должна иметь тестовые входные данные, передаваемые через STDIN.
Вы можете легко сделать это, если ваша программа выводит то, что читает. Вам не нужен специальный тестовый модуль - просто:
Вызовите свою программу, которую вы тестируете, с помощью системного вызова
перенаправить STDIN и STDOUT тестируемой программы в ваш тестовый скрипт, используя
IPC::Open2
модуль для открытия обеих сторон через каналы к файловым дескрипторам,... ИЛИ, соберите команду для перенаправления в / из файлов и чтения / записи файлов в тестовом скрипте
Проверьте STDOUT из протестированной программы, которую вы собрали на последнем шаге, чтобы убедиться, что напечатаны правильные значения.
Если вы хотите проверить, подключен ли STDIN к терминалу, используйте -t
, как в:
if( -t STDIN ){
print "Input from a terminal\n";
}else{
print "Input from a file or pipe\n";
}