Unit-Test für die Plugin-Entwicklung

17

Ich muss Unit-Tests für eines meiner Plugins anwenden. Ich habe es kürzlich in Klassen unterteilt, sodass Unit-Tests jetzt einfacher anzuwenden sind.

Mit welchen effektiven Strategien kann ich mein Plugin Unit-testen? Ich brauche eine Möglichkeit, die im Plugin verwendeten WordPress-Funktionen zu nutzen, aber ich sollte keine laufende WordPress-Site benötigen (nur Testdaten auf der DB AFAIK), oder?

Es fällt mir schwer herauszufinden, wie ich das Plugin und nicht das Plugin im Kontext der Site testen soll. Ich könnte Selenium dafür verwenden, aber im Moment möchte ich mich nur auf das Testen der Funktionalität der Plugin-Klassen konzentrieren, damit ich sie nicht bei jedem Update unterbreche.

Fernando Briano
quelle

Antworten:

14

Als ehemaliger Software-Ingenieur, der große Unternehmenstypen aufbaut und in einer interaktiven Agentur gelandet ist, möchte ich Ihnen einige Gedanken zum Testen bei der Entwicklung für Wordpress geben:

  1. Ihr Unit-Test sollte das kleinste Verhalten testen, das eine Klasse ausführen kann. Jede Klasse sollte unabhängig von Wordpress getestet werden können. Wenn Sie eine Wordpress-Abhängigkeit haben, sollten Sie in Ihrem Test nachgebildete Objekte und / oder Methoden erstellen, um dies zu umgehen. Letztendlich wird dies die Art und Weise, wie Sie Ihren Code schreiben, ein wenig verändern - aber es wird weitaus testbarer sein. Wie immer kein kostenloses Mittagessen.

  2. Wenn Sie die Ebene der Funktionstests erreicht haben, können Sie hier Ihren Code mit Wordpress-Abhängigkeiten testen. Hier würden Sie tatsächlich testen, ob Ihr Plugin tatsächlich einen Dienst ausführt, für den es gedacht ist.

  3. Abhängig davon, was Ihr Plugin macht - erwägen Sie die Verwendung von Selenium-basierten Tests, bei denen mithilfe von IDs geprüft wird, ob Daten im DOM vorhanden sind. Es ist einigermaßen robust und es ist viel weniger wahrscheinlich, dass es Version für Version kaputt geht. Auch hier besteht der Trick darin, das Testen als Teil Ihres Softwareentwicklungslebenszyklus zu betrachten. Große Änderungen im Code führen zu großen Änderungen in Ihren Tests. Alles Teil der Geschäftskosten.

Wenn Sie Hilfe bei einem der Tools benötigen, um dies zu erreichen, stehe ich Ihnen gerne zur Verfügung, wenn Sie eine neue Frage stellen. Ich benutze PHPUnit und seine Selen-Erweiterung in meiner Arbeit.

Ethan Seifert
quelle
1
Hey Ethan, danke für diese professionelle Antwort. Könnte nicht weniger von dieser Community erwarten :) Ich werde versuchen, Komponententests für meine Klassen zu schreiben und einige Scheinobjekte zu erstellen, um die Funktionen von WordPress zu umgehen. Schritt 2 ist der eigentliche schwierige Teil für mich, da ich eine WordPress-Installation für eine Art automatisches Testen benötige, um später mit Selenium arbeiten zu können. Ich werde mit PHPUnit beginnen und sehen, wie das geht. Vielen Dank!
Fernando Briano
Perfekte Antwort!
Rsman
-1

Ich habe kürzlich ein Tutorial erstellt, das die Informationen von meinem Googeln aufnimmt, um zu zeigen, wie man:

  1. Verwenden Sie den WordPress-Kern, um Komponententests durchzuführen
  2. Verstecke veraltete PHP / Session gesendete Warnungen
  3. Zeigen Sie in den Tests, wie Sie Ihre Plugin-Optionen einstellen
  4. Verwenden Sie denselben WP-Core, um Unit-Tests durchzuführen und mehrere Plugins zu testen

Das Tutorial ist hier , ich hoffe es hilft

Daithí
quelle