Wie kann ich Perl-Test :: Tief :: cmp_deeply, ohne die Testzahl zu erhöhen?
Frage
Es sieht aus wie Test::Deep
wurde inspiriert von is_deeply
. Meine Frage ist, wie kann ich cmp_deeply
Teil eines Tests anstelle eines Tests auf seiner eigenen machen? Weil meine Liste der Tests nur 8 Staaten, aber jedes Mal wenn ich cmp_deeply
verwenden, zählt es als Test, meine tatsächliche Anzahl der Tests 11 zu machen (weil ich nenne cmp_deeply
3 mal), wenn ich nur 8 Funktionen. Ich möchte nicht, die Zahl meiner Tests erhöhen. Gibt es eine praktikable Lösung?
Lösung
Sie sollten verwenden eq_deeply
statt:
Dies ist das gleiche wie
cmp_deeply()
außer es nur wahr oder falsch zurückgibt. Dabei spielt es keine Diagnose erstellen ...
Andere Tipps
Es gibt eine Reihe von Dingen, die Sie tun können, aber ohne mehr über die Besonderheiten in Ihren Tests zu wissen, es ist schwer zu wissen, welche am besten geeignet ist:
-
Sie nicht für eine bestimmte Anzahl von Tests planen.
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, deren Komplexität (und die Anzahl der Tests erforderlich) testen ist nicht im Voraus 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;