2

我有一个 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在我的脚本中仍然使用时抑制通过的测试输出的最佳方法是什么?

4

3 回答 3

6

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

prove path/to/test_JSONRegex.pl

基本上相当于

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

但打字少。

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

于 2015-08-09T16:27:04.047 回答
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"
于 2015-08-09T16:36:40.120 回答
3

在测试期间仅显示错误:

Test::More->builder->output("/dev/null")                                        # 
于 2018-09-29T02:55:00.363 回答