Подавить пройденный тестовый вывод в 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"
Другие вопросы по тегам