Anatomie eines Tests

Im einfachsten Fall soll ein Test das Ergebnis eines bestimmten Verhaltens betrachten und sicherstellen, dass dieses Ergebnis mit dem übereinstimmt, was Sie erwarten würden. Verhalten ist nichts, das empirisch gemessen werden kann, weshalb das Schreiben von Tests eine Herausforderung sein kann.

„Verhalten“ ist die Art und Weise, wie ein System **als Reaktion** auf eine bestimmte Situation und/oder Reize **handelt**. Aber genau, *wie* oder *warum* etwas getan wird, ist nicht so wichtig wie *was* getan wurde.

Sie können sich einen Test als auf vier Schritte aufgeteilt vorstellen

  1. Vorbereiten

  2. Ausführen

  3. Überprüfen

  4. Aufräumen

Vorbereiten ist, wo wir alles für unseren Test vorbereiten. Das bedeutet so ziemlich alles außer dem „Ausführen“. Es ist das Aufstellen der Dominosteine, damit das Ausführen seine Sache in einem einzigen, zustandsverändernden Schritt erledigen kann. Dies kann die Vorbereitung von Objekten, das Starten/Beenden von Diensten, das Einfügen von Datensätzen in eine Datenbank oder sogar Dinge wie das Definieren einer abzufragenden URL, das Generieren von Anmeldeinformationen für einen noch nicht existierenden Benutzer oder einfach das Warten auf den Abschluss eines Prozesses bedeuten.

Ausführen ist die einzige, zustandsverändernde Aktion, die das zu testende Verhalten auslöst. Dieses Verhalten ist das, was die Zustandsänderung des zu testenden Systems (SUT) bewirkt, und es ist der resultierende geänderte Zustand, den wir betrachten können, um ein Urteil über das Verhalten zu fällen. Dies geschieht typischerweise in Form eines Funktions-/Methodenaufrufs.

Überprüfen ist, wo wir den resultierenden Zustand betrachten und prüfen, ob er so aussieht, wie wir ihn nach dem Abklingen erwartet hätten. Hier sammeln wir Beweise, um zu sagen, ob das Verhalten mit unseren Erwartungen übereinstimmt oder nicht. Die assert in unserem Test ist, wo wir diese Messung/Beobachtung nehmen und unser Urteil darauf anwenden. Wenn etwas grün sein sollte, würden wir sagen assert ding == "grün".

Aufräumen ist, wo der Test nach sich selbst aufräumt, damit andere Tests nicht versehentlich dadurch beeinflusst werden.

Im Kern sind die Ausführen und Überprüfen Schritte letztendlich der Test, wobei der Vorbereiten Schritt nur den Kontext liefert. Verhalten existiert zwischen Ausführen und Überprüfen.