在 Test::More 中抑制通过的测试输出

Suppress passed test output in Test::More

我有一个 Perl 单元测试,它为每个通过的测试输出 "ok"。我发现自己不断向上滚动以找到第一个失败的测试,因为这是我唯一感兴趣的东西。我正在使用 Test::More.

use strict; use warnings;
use JSONRegex;
use Test::More;

我希望只显示失败的测试。我尝试了使用

的解决方案
perl -MTest::Harness -e 'runtests @ARGV' path/to/test_JSONRegex.pl

它奏效了。但我想把它放在 shebang 行中,这样我就可以忘记它了。社群

#!/usr/bin/env perl -MTest::Harness

失败消息 Too late for "-MTest::Harness" option at ./test_JSONRegex.pl line 1.

在我的脚本中仍然使用 strict 的同时抑制通过的测试输出的最佳方法是什么?

为什么不直接使用 prove 命令来 运行 您的测试脚本?

prove path/to/test_JSONRegex.pl

基本等同于

perl -MTest::Harness -e 'runtests @ARGV' path/to/test_JSONRegex.pl

但打字更少。

尝试让测试脚本自动确定它是否已经 运行在测试工具中将变得棘手且容易出错。

-MTest::Harness

简单地说

use Test::Harness;

在脚本的顶部。但是然后呢?您打算如何致电 runtests?这是非常错误的。如果你想保存输入,使用 prove 作为 @cjm 提到的,或者创建第二个小脚本来 运行 你的测试。

#!/bin/sh
# This is path/to/test_JSONRegex
BASE="$( dirname "$( readlink -e "[=12=]" )" )"
perl -MTest::Harness -e'runtests @ARGV' "$BASE/test_JSONRegex.pl"

仅显示测试期间的错误:

Test::More->builder->output("/dev/null")                                        #