2013-04-30 74 views
1

我有我写的测试脚本科罗测试::更多

工作科罗计划这是我怎么想测试一个削减版本

use Test::More ;#tests => 9; 

BEGIN{ 
    use_ok('EV') || print "Bail out!\n"; 
    use_ok('Coro') || print "Bail out!\n"; 
    use_ok('AnyEvent') || print "Bail out!\n"; 
    use_ok('Coro::AnyEvent') || print "Bail out!\n"; 
} 

my @coro; 
push @coro, async sub{ok(Coro::AnyEvent::sleep(2), 'sleep')}; 

push @coro, async sub{ok (1 == 1, 'one equals one')}; 
push @coro, async sub{isnt (1, 2, 'one does not equal two')}; 
#push @coro, async sub{is(EV::unloop, undef, 'unloop')}; 

#EV::run; 

map {ok($_->join, 'join')} @coro; 

这给了我

t/coro-test.t .. 
ok 1 - use EV; 
ok 2 - use Coro; 
ok 3 - use AnyEvent; 
ok 4 - use Coro::AnyEvent; 
ok 5 - one equals one 
ok 6 - one does not equal two 
Undefined subroutine &main:: called at /usr/lib/perl5/Coro/AnyEvent.pm line 218. 
Dubious, test returned 9 (wstat 2304, 0x900) 
All 6 subtests passed 

Test Summary Report 
------------------- 
t/coro-test.t (Wstat: 2304 Tests: 6 Failed: 0) 
    Non-zero exit status: 9 
    Parse errors: No plan found in TAP output 
Files=1, Tests=6, 0 wallclock secs (0.02 usr 0.01 sys + 0.18 cusr 0.03 csys = 0.24 CPU) 
Result: FAIL 

我的(真正的)程序设置协程,然后他们睡觉whist他们没有做任何事情,所以它不是一个人为的例子。

任何帮助感激地收到。 (我认为unloop和EV ::运行不是必需的)

+0

而不是'use_ok('EV')|| print“Bail out!\ n”;'我写'use_ok('EV')|| BAIL_OUT('使用EV失败')“;'。感谢与'||'的提示,我一直在寻找如何正确处理加载模块失败的问题 – 2013-05-21 12:15:01

+0

但实际上你似乎没有问题...这里不是主意问题应该关闭,因为没有答案可以给 – 2013-05-21 12:16:43

+0

问题是我如何得到Test :: More与Coro一起工作,因为我想这样做,因为我是一个粉丝Test :: More和Coro。 – KeepCalmAndCarryOn 2013-05-27 02:12:50

回答

1

我无法想象为什么Test :: More不能工作的原因,事实上,它适用于当前版本的Coro和我AnyEvent(EV或Perl作为事件后端)。

我认为你的问题可能是Coro :: AnyEvent :: sleep会返回Test :: More在你的系统上不喜欢的东西。假设Coro :: AnyEvent :: sleep无论如何都返回任何具体正在寻找麻烦的东西 - 返回值(如果有的话)是未记录的,所以期望它是特定的东西使得你的程序依赖于未记录的行为,并且故障是预期的结果。

+0

现在也适用于我。爱你的工作的方式 – KeepCalmAndCarryOn 2014-01-06 21:53:11