Test :: Builder :: Tester失败测试失败,为什么?

时间:2011-05-10 01:06:47

标签: perl testing

这是测试的输出。

prove -lv t/02-fail.t
t/02-fail.t .. 
not ok 1
1..1

#   Failed test at t/02-fail.t line 15.
# STDOUT is:
# ok 1 - corpus/fail/FooBar.pm version 1.0.1 is valid
# not ok 2 - corpus/fail/FooBarBaz.pm version  is valid
# 
# not:
# ok 1 - corpus/fail/FooBar.pm version 1.0.1 is valid
# 
# not ok 2 - corpus/fail/FooBarBaz.pm version  is valid
# 
# as expected
# STDERR is:
# #   Failed test 'corpus/fail/FooBarBaz.pm version  is valid'
# #   at /home/xenoterracide/projects/Test-HasValidVersion/lib/Test/HasValidVersion.pm line 60.
# # corpus/fail/FooBarBaz.pm VERSION  is not a valid verion
# 
# not:
# 
# as expected
Failed 1/1 subtests 

Test Summary Report
-------------------
t/02-fail.t (Wstat: 0 Tests: 1 Failed: 1)
  Failed test:  1
Files=1, Tests=1,  0 wallclock secs ( 0.02 usr  0.01 sys +  0.04 cusr  0.01 csys =  0.08 CPU)
Result: FAIL

和测试本身

#!/usr/bin/perl
use 5.006;
use strict;
use warnings;
use Test::Builder::Tester;
use Test::More;
use Test::HasValidVersion qw( version_all_ok );

test_out( 'ok 1 - corpus/fail/FooBar.pm version 1.0.1 is valid',
    'not ok 2 - corpus/fail/FooBarBaz.pm version  is valid'
);

version_all_ok( 'corpus/fail' );

test_test;
done_testing;

(注意:这里有一个指向github repository测试代码的链接有一些不同但是大致相同。模块没有任何不同。如果你克隆了repo,请确保你看看提交daaab6a7c452958399f74150406915657f2cfa33作为主分支正在更新)

我不确定为什么这会失败,似乎注入了docs没有提到的整行。

有人可以帮我纠正代码以使其通过吗?

2 个答案:

答案 0 :(得分:0)

您是否尝试将Test :: More和Test :: Builder :: Tester升级到最新版本?在这里使用perl-5.10.1和perl-5.14.0-RC3以及两者的最新版本,我无法复制你的错误,使用git repo的结帐(并修复回购中的行的明显问题)被扭转了。)

答案 1 :(得分:0)

所以我需要做的是在代码中添加test_fail(+4)。最后,我切换到Test::Tester,不必处理空白问题。

#!/usr/bin/perl
use 5.006;
use strict;
use warnings;
use Test::Builder::Tester;
use Test::More;
use Test::HasValidVersion qw( version_ok );

test_out(
    'ok 1 - VERSION 1.0.1 in corpus/fail/FooBar.pm is valid',
    'not ok 2 - validate VERSION in corpus/fail/FooBarBaz.pm',
);
test_fail(+4);
test_diag('VERSION in corpus/fail/FooBarBaz.pm is not a valid version');

version_ok( 'corpus/fail/FooBar.pm' );
version_ok( 'corpus/fail/FooBarBaz.pm' );
# version_all_ok('corpus/fail');

test_test;
done_testing;

这是link to the fixed commit

相关问题