2013-04-30 5 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 

내 (실제) 프로그램은 그들이 그렇게는하지 인위적인 예를 상관없는 침묵 잠을 해제 코 루틴을 설정합니다.

도움을 주신 모든 도움. (나는 unloop와 EV :: run이 필요하지 않다고 생각한다.)

+0

대신 'use_ok ('EV ') || print "Bail out! \ n";'쓸'use_ok ('EV') || BAIL_OUT ('EV를 사용하지 못했습니다') ";"팁을 '||'로 보내 주셔서 모듈을로드하지 못하는 문제를 적절하게 처리하는 방법을 찾고있었습니다 –

+0

하지만 실제로는 질문 : 여기에 아이디어가 없습니다. 답변을 제공 할 수 없기 때문에 질문을 닫아야합니다. –

+0

질문 : 어떻게하면 Test :: More에서 Coro와 협력 할 수 있습니까? 테스트 :: 기타 및 Coro – KeepCalmAndCarryOn

답변

1

Test :: More가 작동하지 않는 이유를 상상할 수 없다. 사실, 현재의 Coro와 AnyEvent (이벤트 백엔드로서의 EV 또는 Perl).

당신의 문제는 Coro :: AnyEvent :: sleep이 Test :: More이 시스템에서별로 좋아하지 않는 것을 반환한다고 생각합니다. 가정 할 때 Coro :: AnyEvent :: sleep은 특정 문제를 찾고 있습니다. 반환 값은 문서화되어 있지 않기 때문에 프로그램이 문서화되지 않은 동작에 의존하게되어 예상치 못한 결과를 초래할 수 있습니다. 결과.

+0

그것은 나를 위해 너무 작동합니다. – KeepCalmAndCarryOn