Frage

Kann jemand ein gutes automatisiertes Testsuite-Framework für Perl vorschlagen?

War es hilfreich?

Lösung

Es hängt wirklich davon ab, was Sie tun möchten, aber hier finden Sie einige Hintergrundinformationen zu vielem davon.

Zunächst würden Sie Ihre Testprogramme im Allgemeinen mit Test::More oder Test::Simple als Kerntestprogramm schreiben:

use Test::More tests => 2;

is 3, 3, 'basic equality should work';
ok !0, '... and zero should be false';

Intern wird Test::Builder aufgerufen, um diese Testergebnisse als TAP auszugeben (Testen Sie das Anything-Protokoll).Test::Harness (eine dünne Hülle um TAP::Harness) liest und interpretiert den TAP und teilt Ihnen mit, ob Ihre Tests bestanden wurden oder nicht.Das oben erwähnte „Beweis“-Tool ist im Paket mit Test::Harness enthalten. Nehmen wir also an, dass Sie das obige im t/-Verzeichnis (dem Standard-Perl-Testverzeichnis) als „numbers.t“ speichern. Dann können Sie es mit diesem Befehl ausführen:

prove --verbose t/numbers.t

Oder um alle Tests in diesem Verzeichnis auszuführen (rekursiv, vorausgesetzt, Sie möchten in Unterverzeichnisse absteigen):

prove --verbose -r t/

(--verbose ist natürlich optional).

Als Randbemerkung: Verwenden Sie TestUnit nicht.Viele Leute empfehlen es, aber es wurde vor langer Zeit aufgegeben und lässt sich nicht in moderne Testtools integrieren.

Andere Tipps

Kasse CPAN-Tester, die über viele Tools für automatisierte Tests verfügen.Das meiste davon sollte über CPAN erfolgen, sodass Sie es an Ihre Bedürfnisse anpassen können.Es ist auch sehr einfach, mit TAP::Harness einen eigenen Tester zu schreiben.

Was genau müssen Sie tun und wie versuchen Sie, es in Ihren Prozess zu integrieren?

Solange Sie Tests verwenden, die eine TAP-Ausgabe (Test Anything Protocol) erzeugen, könnte dies nützlich sein: http://sourceforge.net/projects/smolder

Hast du gesehen schwelen?

„Rauchtest-Aggregator, der von Entwicklern und Testern zum Hochladen (automatisiert oder manuell) und Anzeigen von Rauch-/Regressionstests mithilfe des Test Anything Protocol verwendet wird.Details und Trends werden grafisch dargestellt und Benachrichtigungen per E-Mail oder Atom-Feeds bereitgestellt.“

Wenn ich Sie richtig verstehe, suchen Sie TAP::Geschirr

Wenn Sie verwenden ExtUtils::MakeMaker oder Modul::Build, dann können Sie alle Ihre Tests automatisch ausführen, indem Sie den Befehl „make test“ oder „Build test“ eingeben, wodurch alle *.t-Dateien im t/-Unterordner Ihres Projekts ausgeführt werden.

Wenn Sie keines davon verwenden, können Sie es verwenden TAP::Geschirr um die Ausführung mehrerer Testskripte zu automatisieren.

Um die Tests tatsächlich zu schreiben, verwenden Sie Test::Mehr oder eines der Module, die andere hier vorgeschlagen haben.

Wir müssen alle Testdateien manuell zum Testen ausführen

Sie möchten auf jeden Fall „Prove“ (führt Ihren Test aus) und/oder „Module::Build“ (erstellt Ihren Code und führen dann Ihre Tests mit demselben Test-Harness-Code aus, den Proof intern verwendet) verwenden.

Du sagtest:

„Was ich suche, ist ein stärker automatisiertes Framework, das inkrementelle Tests/Build-Prüfungen usw. durchführen kann.“

Ich bin mir immer noch nicht ganz sicher, was Sie suchen.Wie andere bereits erwähnt haben, möchten Sie sich Dinge ansehen, die auf Test::Harness/TAP basieren.Die überwiegende Mehrheit der Perl-Test-Community verwendet dieses Framework – Sie erhalten also viel mehr Unterstützung (und nützlichen vorhandenen Code), wenn Sie es verwenden.

Können Sie etwas näher erläutern, was Sie unter „inkrementellen Tests/Build-Prüfungen“ verstehen?

Ich vermute, dass Sie Ihre Tests in Gruppen aufteilen möchten, sodass Sie bestimmte Testreihen nur unter bestimmten Umständen ausführen?

Es gibt mehrere Möglichkeiten, dies zu tun.Am einfachsten wäre es, einfach das Dateisystem zu verwenden – teilen Sie Ihre Testverzeichnisse auf, sodass Sie Folgendes haben:

core/
 database.t
 infrastructure.t
style/
  percritic.t
ui/
  something.t
  something-else.t

Und so weiter...Sie können dann das Befehlszeilentool „beweisen“ verwenden, um sie alle oder nur bestimmte Verzeichnisse usw. auszuführen.

Beweis verfügt über viele nützliche Optionen, mit denen Sie auswählen können, welche Tests in welcher Reihenfolge ausgeführt werden (z. B.Dinge wie die zuletzt fehlgeschlagene Bestellung).Dies allein wird Sie wahrscheinlich zu dem bringen, was Sie brauchen.

(Übrigens ist es wichtig, eine aktuelle Version von Test::Simple/prove/etc zu erhalten.von CPAN.Neuere Versionen haben viel, viel mehr Funktionalität.

Wenn Sie eine OO-Denkweise haben oder bereits Erfahrung mit xUnit-Frameworks haben, sollten Sie sich Test::Class ansehen, ein Perl-xUnit-Framework, das auf der TAP/Test::Harness-Ebene aufbaut.Ich denke, es ist um einiges besser als PerlUnit – aber das würde ich sagen, seit ich es geschrieben habe :-)

Schauen Sie sich Delicious an, um weitere Informationen zu Test::Class zu erhalten http://delicious.com/tag/Test::Class

Wenn dies nicht das ist, was Sie suchen, könnten Sie dann etwas detaillierter auf die gewünschte Funktionalität eingehen?

Prost,

Adrian

Persönlich mag ich Test::Most, es ist im Grunde Test::More mit einigen zusätzlichen coolen Funktionen.

Das Testsuite-Framework der Wahl ist Test::Geschirr, das sich um die Steuerung eines Testlaufs, das Sammeln der Ergebnisse usw. kümmert.

Es gibt verschiedene Module zur Bereitstellung bestimmter Arten von Tests, von denen die gebräuchlichsten in zu finden sind Test::Einfach Und Test::Mehr (beide sind in der Test-Simple-Distribution enthalten).Der gesamte Test-Namespace im CPAN ist spezialisierten Unit-Test-Modulen gewidmet, von denen die meisten für die Ausführung unter Test::Harness konzipiert sind.

Konventionell werden Tests im t/-Verzeichnis eines Projekts gespeichert und jede Testdatei verwendet die Dateierweiterung .t;Tests werden üblicherweise über ausgeführt

 prove t/*.t

Modulverteilungen enthalten normalerweise ein Make-Ziel namens „test“, das die Testsuite vor der Installation ausführt.Standardmäßig erfordert der CPAN-Installationsprozess, dass nach dem Build Tests bestanden werden, bevor ein Modul installiert wird.

Ich würde mich für Test::More oder allgemein für alles entscheiden, was ausgibt KLOPFEN

Derzeit verwenden wir Test::More, aber das aktuelle Problem besteht darin, dass wir zum Testen alle Testdateien manuell ausführen müssen.Was ich suche, ist ein stärker automatisiertes Framework, das inkrementelle Tests/Build-Prüfungen usw. durchführen kann.

Ein Wrapper um Test::More wäre ideal, aber alles, was besser und funktionaler wäre, wäre auch in Ordnung.

Ich gehe PerlUnit durch, um zu sehen, ob das hilft.

Kennen Sie das Dienstprogramm „prove“ (von App::Prove)?Sie können es anweisen, alle Tests rekursiv in einem bestimmten Verzeichnis auszuführen, mit oder ohne Ausführlichkeit usw.

Für automatisierte Tests in Perl schauen Sie sich an Test::Geschirr, das die enthält prove Werkzeug.

Der prove Das Tool kann mit dem folgenden Befehl ausgeführt werden:

prove -r -Ilib t

Dadurch werden alle *.t-Dateien im Verzeichnis „t/“ beim Hinzufügen rekursiv getestet lib zum Include-Pfad.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top