2009-08-13 9 views
0

Es sieht wie Test::Deep wurde inspiriert von is_deeply. Meine Frage ist, wie mache ich cmp_deeply Teil eines Tests statt eines Tests für sich? Weil meine Liste der Tests nur 8 angibt, aber jedes Mal, wenn ich cmp_deeply verwende, zählt es als ein Test, der meine tatsächliche Anzahl von Tests 11 macht (weil ich cmp_deeply 3 Mal anrufe), wenn ich nur 8 Funktionen habe. Ich möchte die Anzahl meiner Tests nicht erhöhen. Gibt es eine praktikablere Lösung?Wie kann ich Perls Test :: Deep :: cmp_deeply verwenden, ohne die Anzahl der Tests zu erhöhen?

+0

Warum möchten Sie Ihre Testzählung nicht erhöhen? Sie erhöhen bereits Ihre Anzahl von Tests, wenn Sie das möchten oder nicht. –

Antwort

8

sollten Sie eq_deeply statt:

Dies ist die gleiche wie cmp_deeply() außer es nur wahr oder falsch zurückgibt. Dabei spielt es keine Diagnose erstellen ...

+0

Dies beantwortet nicht wirklich die Frage, oder? Unabhängig davon, ob eine Ausgabe erfolgt oder nicht, ist die Anzahl der Tests zwischen eq_deeply und cmp_deeply gleich. – Ether

+1

Nein, 'eq_deeply' * gibt nur wahr oder falsch zurück. * Es meldet nichts an die Testumgebung. –

2

eine Reihe von Dingen gibt, die Sie tun können, aber ohne mehr über die Besonderheiten in Ihren Tests zu wissen, ist es schwierig zu wissen, welche am besten geeignet ist:

  • Planen Sie nicht eine bestimmte Anzahl von Tests.

    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. 
    
  • dynamisch bestimmen, wie viele Tests sind Lauf sind, was Sinn macht, wenn Sie einige tiefe und dynamische Struktur testen, deren Komplexität (und die Anzahl der Tests erforderlich) im Voraus nicht bekannt:

    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; 
    
Verwandte Themen