Ich habe überall gelesen, wie großartig sie sind, aber aus irgendeinem Grund kann ich nicht herausfinden, wie genau ich etwas testen soll. Könnte jemand vielleicht einen Beispielcode posten und wie er ihn testen würde? Wenn es nicht zu viel Mühe gibt :)
php
unit-testing
testing
tdd
Lass los
quelle
quelle
Antworten:
Es gibt ein drittes "Framework", das weitaus einfacher zu erlernen ist - sogar einfacher als Simple Test, es heißt phpt.
Eine Grundierung finden Sie hier: http://qa.php.net/write-test.php
Bearbeiten: Ich habe gerade Ihre Anfrage nach Beispielcode gesehen.
Nehmen wir an, Sie haben die folgende Funktion in einer Datei namens lib.php :
Der Parameter, den Sie übergeben, ist sehr einfach und unkompliziert und wird zurückgegeben. Schauen wir uns also einen Test für diese Funktion an. Wir rufen die Testdatei foo.phpt auf :
Kurz gesagt, wir geben dem Parameter den
$bar
Wert"Hello World"
undvar_dump()
die Antwort des Funktionsaufrufs anfoo()
.Verwenden Sie zum Ausführen dieses Tests:
pear run-test path/to/foo.phpt
Dies erfordert eine funktionierende Installation von PEAR auf Ihrem System, was in den meisten Fällen häufig vorkommt. Wenn Sie es installieren müssen, empfehle ich, die neueste verfügbare Version zu installieren. Wenn Sie Hilfe beim Einrichten benötigen, wenden Sie sich bitte an uns (geben Sie jedoch das Betriebssystem usw. an).
quelle
run-tests
?Es gibt zwei Frameworks, die Sie für Unit-Tests verwenden können. Simpletest und PHPUnit , die ich bevorzuge. Lesen Sie die Tutorials zum Schreiben und Ausführen von Tests auf der Homepage von PHPUnit. Es ist ganz einfach und gut beschrieben.
quelle
Sie können Unit-Tests effektiver gestalten, indem Sie Ihren Codierungsstil ändern, um ihn zu berücksichtigen.
Ich empfehle, im Google Testing Blog zu stöbern , insbesondere im Beitrag zum Schreiben von testbarem Code .
quelle
Ich habe meine eigenen gerollt, weil ich keine Zeit hatte, jemanden zu lernen, wie man andere Dinge macht. Das Schreiben dauerte ungefähr 20 Minuten, 10 Minuten, um es für die Veröffentlichung hier anzupassen.
Unittesting ist für mich sehr nützlich.
Das ist ein bisschen lang, aber es erklärt sich von selbst und es gibt ein Beispiel unten.
Dies gibt aus:
quelle
Holen Sie sich PHPUnit. Es ist sehr einfach zu bedienen.
Beginnen Sie dann mit sehr einfachen Aussagen. Sie können viel mit AssertEquals tun, bevor Sie sich auf etwas anderes einlassen. Das ist ein guter Weg, um Ihre Füße nass zu machen.
Möglicherweise möchten Sie auch zuerst versuchen, Ihren Test zu schreiben (da Sie Ihrer Frage das TDD-Tag gegeben haben) und dann Ihren Code schreiben. Wenn Sie dies noch nicht getan haben, ist es ein Augenöffner.
quelle
Für einfache Tests UND Dokumentation ist php-doctest sehr nett und ein sehr einfacher Einstieg, da Sie keine separate Datei öffnen müssen. Stellen Sie sich die folgende Funktion vor:
Wenn Sie diese Datei jetzt über phpdt (Befehlszeilen-Runner von php-doctest) ausführen, wird 1 Test ausgeführt. Der Doctest ist im <code> -Block enthalten. Doctest stammt ursprünglich aus Python und ist gut geeignet, um nützliche und ausführbare Beispiele dafür zu geben, wie der Code funktionieren soll. Sie können es nicht ausschließlich verwenden, da der Code selbst mit Testfällen übersät ist, aber ich habe festgestellt, dass es neben einer formaleren tdd-Bibliothek nützlich ist - ich verwende phpunit.
Diese erste Antwort hier fasst es gut zusammen (es ist nicht Einheit gegen Doktest).
quelle
phpunit ist so ziemlich das defacto Unit Testing Framework für PHP. Es gibt auch DocTest (als PEAR-Paket erhältlich) und einige andere. PHP selbst wird über PHpt-Tests, die auch über Birne ausgeführt werden können, auf Regressionen und dergleichen getestet .
quelle
Codeception-Tests ähneln gängigen Unit-Tests, sind jedoch in Dingen, in denen Sie sich lustig machen und stubben müssen, sehr leistungsfähig.
Hier ist der Beispiel-Controller-Test. Beachten Sie, wie einfach Stubs erstellt werden. Wie einfach Sie überprüfen, wurde die Methode aufgerufen.
Es gibt auch andere coole Dinge. Sie können den Datenbankstatus, das Dateisystem usw. testen.
quelle
Erstellen Sie Ihre Anwendung neben den bereits gegebenen hervorragenden Vorschlägen zu Test-Frameworks mit einem der PHP-Web-Frameworks, in die automatisierte Tests integriert sind, z. B. Symfony oder CakePHP ? Manchmal verringert ein Platz, an dem Sie einfach Ihre Testmethoden ablegen können, die Startreibung, die manche Leute mit automatisierten Tests und TDD verbinden.
quelle
Viel zu viel, um es hier erneut zu veröffentlichen, aber hier ist ein großartiger Artikel über die Verwendung von phpt . Es behandelt eine Reihe von Aspekten rund um PHP , die oft übersehen werden. Es kann sich also lohnen, diese zu lesen, um Ihr Wissen über PHP über das Schreiben eines Tests hinaus zu erweitern. Glücklicherweise behandelt der Artikel auch das Schreiben von Tests!
Die Hauptdiskussionspunkte
quelle
Ich weiß, dass es hier bereits viele Informationen gibt, aber da diese immer noch in der Google-Suche angezeigt werden, kann ich die Chinook Test Suite genauso gut zur Liste hinzufügen . Es ist ein einfaches und kleines Test-Framework.
Sie können damit problemlos Ihre Klassen testen und auch Scheinobjekte erstellen. Sie führen die Tests über einen Webbrowser und (noch nicht) über eine Konsole aus. Im Browser können Sie angeben, welche Testklasse oder sogar welche Testmethode ausgeführt werden soll. Oder Sie können einfach alle Tests ausführen.
Ein Screenshot von der Github-Seite:
Was ich daran mag, ist die Art und Weise, wie Sie Tests behaupten. Dies geschieht mit sogenannten "fließenden Behauptungen". Beispiel:
Und das Erstellen von Scheinobjekten ist ebenfalls ein Kinderspiel (mit einer fließenden Syntax):
Weitere Informationen finden Sie auf der Github-Seite mit einem Codebeispiel:
https://github.com/w00/Chinook-TestSuite
quelle