Die Art wie dieser Test geschrieben ist, ist aus meiner Sicht der „intuitive Weg“ wie man so einem Test als erstes abbildet. Es werden hier direkt einige Nachteile sichtbar.
Der Test ist ziemlich unleserlich. Als Entwickler muss man Zeile für Zeile prüfen, um wirklich zu verstehen was getestet wird. Es wird schnell zu doppelten Source-Code kommen, z.B. sobald ich einen zweiten Test schreibe, der wieder den 501 Spielmodus startet.
Hier kommt das POM Pattern ins Spiel. Es wird für jede Seite in der Anwendung eine eigene Klasse implementiert. In unserem Fall also eine MenuPage und eine GamePage. Nun werden alle Actions und Steps die auf der jeweiligen Seite ausgeführt werden hier implementiert.
- Action -> Aktivitäten auf dieser Page, also z.B. selectTriple in der GamePage
- Steps -> Aktionen die zu einer anderen Page navigieren, also z.B. start501Game in der MenuPage
Jede Page sollte den Tester direkt als Konstruktor Parameter erhalten, weil dieser in diesem Kontext immer benötigt wird. Jede Step-Methode sollte das Page Objekt zurückgeben, auf das navigiert wird. In unserem Fall gibt start501Game die GamePage zurück. Das ermöglicht, dass man im Test direkt mit dem nächsten PageObject weiter arbeiten kann. Der fertige Test sieht dann wie folgt aus.