Perl - TAP::Harness 和 test_args

jon*_*ers 2 testing perl unit-testing

我在 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],
    });
Run Code Online (Sandbox Code Playgroud)

一段时间后,我调用 $harness->runtests(),传递一系列测试。

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

use Data::Dumper;
print Dumper \@ARGV;
Run Code Online (Sandbox Code Playgroud)

输出:

$VAR1 = [];
Run Code Online (Sandbox Code Playgroud)

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

bvr*_*bvr 5

你的初始化工作吗?我必须将 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');
Run Code Online (Sandbox Code Playgroud)

在测试中simple.t

use Test::More;
use Data::Dump qw(dump);

dump [@ARGV];    # prints ["--url", "", "--session", ""]

done_testing;
Run Code Online (Sandbox Code Playgroud)