【问题标题】:Perl - TAP::Harness and test_argsPerl - TAP::Harness 和 test_args
【发布时间】:2011-06-20 16:32:49
【问题描述】:

我在 perl 中使用 TAP::Harness,如下所示:

$harness = TAP::Harness->new({
        formatter_class => 'TAP::Formatter::Console',
        merge => 1,
        verbosity => 1,
        normalize => 1,
        color => 1,
        test_args => ['--url', $url, '--session', $session],
    });

稍后我调用 $harness->runtests(),传递了几个测试的数组。

问题是,在我所有的测试中:

use Data::Dumper;
print Dumper \@ARGV;

输出:

$VAR1 = [];

在底层测试中 @ARGV 中没有出现 test_args 吗?我需要为每个测试传递一些选项。

【问题讨论】:

    标签: perl unit-testing testing


    【解决方案1】:

    你的初始化工作吗?我必须将 hashref 传递给构造函数才能使其工作:

    use TAP::Harness;
    
    $harness = TAP::Harness->new({
        formatter_class => 'TAP::Formatter::Console',
        merge           => 1,
        verbosity       => 1,
        normalize       => 1,
        color           => 1,
        test_args       => ['--url', $url, '--session', $session],
    });
    
    $harness->runtests('simple.t');
    

    测试中simple.t

    use Test::More;
    use Data::Dump qw(dump);
    
    dump [@ARGV];    # prints ["--url", "", "--session", ""]
    
    done_testing;
    

    【讨论】:

    • 我重新输入了一些代码,b/c 我动态填写了传入的哈希值,所以这是一个错字。奇怪的是你可以让它工作,我要复制你的代码并尝试一下。
    • @Jonathan.Peppers - 请注意传递哈希(作为列表)和哈希引用之间的区别。 new 调用中的 {} 正在构建它。但无论如何感谢您将我指向TAP::Harness
    • @Jonathan.Peppers - 我的示例对您有用吗?顺便说一句,我在 WinXP 上使用 perl 5.12.2 和 Test-Harness 3.23 版
    • 我不确定我做错了什么,你的例子有效。由于其他原因(我需要这些设置保持不变),我已经开始将这些设置保存到文件中,所以我没有我的原始代码可以尝试。不过,将您标记为答案,谢谢您的帮助。
    猜你喜欢
    • 2011-07-03
    • 1970-01-01
    • 1970-01-01
    • 2015-03-11
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多