【问题标题】:Suppress passed test output in Test::More在 Test::More 中抑制通过的测试输出
【发布时间】:2015-11-01 13:17:35
【问题描述】:

我有一个 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 的同时抑制通过的测试输出的最佳方法是什么?

【问题讨论】:

标签: perl unit-testing test-more


【解决方案1】:

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

prove path/to/test_JSONRegex.pl

基本上等价于

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

但打字较少。

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

【讨论】:

  • 谢谢!这很方便。
【解决方案2】:
-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"

【讨论】:

    【解决方案3】:

    在测试期间只显示错误:

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

    【讨论】:

      猜你喜欢
      • 2018-05-09
      • 2013-08-22
      • 1970-01-01
      • 2013-03-04
      • 1970-01-01
      • 2020-04-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多