Automatisierung beim Schreiben von Unittests

Test schreiben ist oft eine sehr repetitive Sache. Hier kann man viel automatisieren – z.B. die Testklasse zu seiner Klasse erstellen lassen:

  • Rechtsklick auf die Datei mit der zu testenden Klasse
  • New / Php Test / PhpUnit Test
  • Er will mir die Testklasse leider immer im aktuellen Verzeichnis erstellen – wie man das ändert habe ich leider noch nicht gefunden, somit muss ich in dem Feld Directory immer noch „src“ gegen „test“ austauschen. (EDIT: Rechte Maustaste auf das Verzeichnis test im Projekt-Explorer, „Mark Directory as / Test Source Root“. Danke, Jens! – Zu „Mark Directory As“ wird es auch bald mal einen Beitrag geben)
  • Für bestehende Methoden der Klasse könnten nun auch gleich test-Methoden erzeugt werden. Trifft bei mir seltener zu, da ich in der Regel die Tests zuerst schreibe.

 

Die Datei wird nun angelegt und ich kann gleich Tests schreiben. Also klicke ich in die Klasse und drücke <Alt>-<Einfg>:

Das Problem: Was mir generiert wird, passt mir nicht:

Was ich haben will ist das:

/**
 * | <-Hier soll der Cursor zu Beginn stehen
 *
 * @test
 * @return void
 **/
public function itShould|() {

}

Glücklicherweise kann man das konfigurieren!

Also ab in die Settings:

Leider zieht er dieses Template aktuell (V2017.3) nur beim Erstellen der Klasse (siehe Oben „Generate test methods for“).

Also Variante II: Live Templates (siehe auch Live Templates)

Ich lege ein neues PHP Live Template an, dass auf „tm“ reagiert. Zwei Variablen (comment und name) sind per $$-Notation eingefügt. Was hier passieren soll, kann ich über „Edit Variables“ noch definieren:

Comment ist einfach ein Freitextfeld, hier kann ich einen Text eingeben. Bei Name schlägt er mir zwei Texte vor, aus denen ich auswählen kann, und die ich dann nach-bearbeiten kann.

Im Code gebe ich jetzt tm<TAB> ein, und lande mit dem Cursor an der Stelle, in der im Template die erste Variable $COMMENT$ definiert ist:

Jetzt kann ich meinen Kommentar tippen, und mit <Return> abschließen.

Der Cursor springt nun zur nächsten Variable, und bietet dort wie bestellt zwei Werte zur Auswahl an:

Nachdem ich den Methodennamen vervollständigt habe, springt der Cursor nun ans Ende des Templates:

Eigentlich sollte der Cursor aber nun in der Methode stehen, und nicht nach der schließenden Klammer.

 

Wie man das löst (Tipp: Gimme more variables!) überlasse ich dem Leser als Hausaufgabe! 😀

About the author

IT-Teamleiter bei CHECK24.
Hasst es, Dinge selber zu tun, die auch automatisch gehen.
Will nie wieder Code von Hand formatieren müssen.
Will schon beim Schreiben merken, wenn er Blödsinn macht, nicht erst im Fehlerlog nach dem Deployment.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.

Durch die weitere Nutzung der Seite stimmst du der Verwendung von Cookies zu. Weitere Informationen

Die Cookie-Einstellungen auf dieser Website sind auf "Cookies zulassen" eingestellt, um das beste Surferlebnis zu ermöglichen. Wenn du diese Website ohne Änderung der Cookie-Einstellungen verwendest oder auf "Akzeptieren" klickst, erklärst du sich damit einverstanden.

Schließen