我有一个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线上,这样我就可以忘记它了。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
?这是非常错误的。如果您想保存键入,请使用@cjm提到的prove
,或者创建第二个小脚本来运行测试。
#!/bin/sh
# This is path/to/test_JSONRegex
BASE="$( dirname "$( readlink -e "$0" )" )"
perl -MTest::Harness -e'runtests @ARGV' "$BASE/test_JSONRegex.pl"
只显示测试期间的错误:
Test::More->builder->output("/dev/null") #