perl – 使用TAP线束中的函数而不是测试文件
发布时间:2020-12-16 06:17:42 所属栏目:大数据 来源:网络整理
导读:这是我目前使用TAP的测试工具: use TAP::Harness;my $harness = TAP::Harness-new();$harness-runtests(['sequential.t']); 我想避免使用测试文件并直接调用Perl函数.就像是 : my %args = ( exec = run_all_tests(),);$harness-runtests(); 解决方法 主要
这是我目前使用TAP的测试工具:
use TAP::Harness; my $harness = TAP::Harness->new(); $harness->runtests(['sequential.t']); 我想避免使用测试文件并直接调用Perl函数.就像是 : my %args = ( exec => run_all_tests(),); $harness->runtests(); 解决方法
主要问题是所有现代
test模块都在引擎盖下使用
Test::Builder.
Test::Builder本身假设您只需要在文件中进行一组测试. 因此,我们需要为每组测试重置单例(Test :: More-> builder-> reset). use strict; use warnings; use TAP::Harness; use Test::More; my %tests = ( a => sub{ plan tests => 4; ok 5==5,'5 == 5'; is 5,"5",'is 5,5'; like 5,qr'^d$','5 =~ /^d$/'; is 5,4,4'; },b => sub{ plan tests => 3; ok !0; ok !0; ok !0; },c => sub{ plan 'no_plan'; ok !0; done_testing; },d => sub{ ok !0; done_testing; },); sub runner{ my($harness,$test) = @_; my $builder = Test::More->builder; # reset the Test::Builder object for every "file" $builder->reset; $builder->{Indent} = ''; # may not be needed # collect the output into $out $builder->output(my($out)); # STDOUT $builder->failure_output($out); # STDERR $builder->todo_output($out); # STDOUT # run the test $tests{$test}->(); # the output ( needs at least one newline ) return $out; } my $harness = TAP::Harness->new( { exec => &;runner,verbosity => 1,} ); $harness->runtests(sort keys %tests); a .. 1..4 ok 1 - 5 == 5 ok 2 - is 5,5 ok 3 - 5 =~ /^d$/ not ok 4 - is 5,4 # Failed test 'is 5,4' # at test.pl line 13. # got: '5' # expected: '4' Failed 1/4 subtests b .. 1..3 ok 1 ok 2 ok 3 ok c .. ok 1 1..1 ok d .. ok 1 1..1 ok Test Summary Report ------------------- a (Wstat: 0 Tests: 4 Failed: 1) Failed test: 4 Files=4,Tests=9,0 wallclock secs ( 0.02 usr + 0.00 sys = 0.02 CPU) Result: FAIL (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |