2009-08-13 1 views
0

Test::Deep에 영감을받은 모양은 is_deeply입니다. 제 질문은 테스트 대신에 cmp_deeply 부분을 어떻게 테스트합니까? 테스트 목록은 8 개 뿐이므로 cmp_deeply을 사용할 때마다 8 개의 기능 만있을 때 실제 테스트 번호를 11 (왜냐하면 cmp_deeply 3 번 호출하기 때문에)으로 계산합니다. 테스트 횟수를 늘리고 싶지 않습니다. 보다 실용적인 솔루션이 있습니까?테스트 수를 늘리지 않고 Perl의 Test :: Deep :: cmp_deeply를 어떻게 사용할 수 있습니까?

+0

테스트 횟수를 늘리면 어떨까요? 당신이 원한다면 당신은 이미 당신의 테스트 숫자를 늘리고 있습니다. –

답변

8

대신 eq_deeply를 사용해야합니다 : 그냥 참 또는 거짓 반환을 제외하고

이것은 cmp_deeply() 과 동일합니다. 그것은

당신이 할 수있는 여러 가지가 있습니다
+0

이 질문에 실제로 대답하지 않습니다? 출력의 유무에 관계없이 eq_deeply와 cmp_deeply 사이의 테스트 수는 동일합니다. – Ether

+1

아니요, 'eq_deeply' *는 true 또는 false를 반환합니다. * 테스트 하니스에 아무 것도보고하지 않습니다. –

2

하지만 테스트에서 세부 사항을 더 알고 있기없이 ... 진단을 만들지 않습니다 가장 적합한 알고 어렵다 :

  • 특정 수의 테스트를 계획하지 마십시오.

    use Test::More; 
    
    all(
        cmp_deeply($got0, $expected0), 
        cmp_deeply($got1, $expected1), 
        cmp_deeply($got2, $expected2) 
        ); 
    
    # ... your other 7 tests 
    done_testing(); # signals that we're all done.. exiting normally. 
    
  • 동적으로 당신이 누구의 복잡성 (필요한 시험의 수) 일부 깊고 역동적 인 구조를 테스트하는 경우 의미가 실행되고, 얼마나 많은 테스트 결정은 사전에 알려져 있지 않다 :

    use Test::More; 
    use Test::Deep; 
    
    # perhaps this is in some sort of loop? 
    cmp_deeply($got0, $expected0); $numTests++; 
    cmp_deeply($got1, $expected1); $numTests++; 
    cmp_deeply($got2, $expected2); $numTests++; 
    
    # ... your other 7 tests 
    
    # TAP output must be either at the beginning or end of all output 
    plan tests => $numTests + 7; 
    
    # no more tests here! 
    exit; 
    
관련 문제