重复测试::



我有一个工作的Coro程序,我正在编写测试脚本

这是我如何测试

的简化版本
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

我的(真正的)程序设置协程,然后它们在无事可做时睡觉,所以这不是一个人为的例子。

感谢您的帮助。(我认为unloop和EV::run不是必需的)

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

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

相关内容

  • 没有找到相关文章