抑制Test :: More中传递的测试输出

时间:2015-08-09 15:23:01

标签: perl unit-testing test-more

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

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

我希望只有失败的测试才会出现。我尝试了使用

的解决方案
#!/usr/bin/env perl -MTest::Harness

它有效。但我想把它放在shebang线上,所以我可以忘记它。 shebang

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

失败

在我的脚本中仍然使用{{1}}时,抑制传递测试输出的最佳方法是什么?

3 个答案:

答案 0 :(得分:6)

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

prove path/to/test_JSONRegex.pl

基本等同于

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

但输入次数较少。

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

答案 1 :(得分:3)

-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"

答案 2 :(得分:0)

仅显示测试过程中的错误:

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