Подавить пройденный тестовый вывод в Test::More
У меня есть модульный тест Perl, который выводит "ОК" для каждого пройденного теста. Я прокручиваю вверх и вверх, чтобы найти первый неудачный тест, так как это единственное, что меня интересует. Я использую Test::More.
use strict; use warnings;
use JSONRegex;
use Test::More;
Я бы хотел, чтобы только неудачные тесты появлялись. Я пробовал решение с помощью
perl -MTest::Harness -e 'runtests @ARGV' path/to/test_JSONRegex.pl
и это сработало. Но я хотел поместить это в линию Шебанга, чтобы я мог просто забыть об этом. Шебанг
#!/usr/bin/env perl -MTest::Harness
не удалось с сообщением Too late for "-MTest::Harness" option at ./test_JSONRegex.pl line 1.
Каков наилучший способ подавления пройденного теста во время использования strict
в моем сценарии?
3 ответа
Почему бы просто не использовать prove
Команда для запуска вашего тестового скрипта?
prove path/to/test_JSONRegex.pl
в основном эквивалентно
perl -MTest::Harness -e 'runtests @ARGV' path/to/test_JSONRegex.pl
но с меньшим набором текста.
Попытка заставить тестовый сценарий автоматически определить, работает ли он уже внутри тестового жгута, будет хитрой и подверженной ошибкам.
Показывать только ошибки во время тестирования:
Test::More->builder->output("/dev/null") #
-MTest::Harness
просто ставит
use Test::Harness;
в верхней части вашего сценария. Но что тогда? Как вы планируете звонить runtests
? Это очень неправильно. Если вы хотите сохранить набор текста, используйте prove
как упомянуто @cjm, или создайте второй небольшой скрипт для запуска ваших тестов.
#!/bin/sh
# This is path/to/test_JSONRegex
BASE="$( dirname "$( readlink -e "$0" )" )"
perl -MTest::Harness -e'runtests @ARGV' "$BASE/test_JSONRegex.pl"