2.5.3.2. Einstellen der Transaktionsverwaltung

Bei der Erstellung der checkerberry db-Umgebung muss in der Regel auch das Transaktionshandling berücksichtigt werden.

Checkerberry db kommuniziert über eine eigene JDBC-Verbindung mit der Datenbank. Für die Ausführung von automatisierten Tests bedeutet dies, dass die checkerberry db-Statements und die Statements der zu testenden Komponenten in unterschiedlichen Transaktionen ausgeführt werden. Aus diesem Grund ist es erforderlich, sich Gedanken über das gewünscht Transaktionsverhalten zu machen.

Wenn die zu testenden Komponenten bereits eine geöffnete Transaktion erwarten, sollte in der Setup-Phase eine neue Transaktion geöffnet werden, die in der Teardown-Phase wieder geschlossen wird. Wenn die zu testenden Komponenten hingegen immer in einer eigenen Transaktion ausgeführt werden, ist die explizite Verwaltung der Transaktion im Test nicht erforderlich. Es ist durchaus möglich, dass in unterschiedlichen Teilprojekten unterschiedliche Transaktionsverhalten erforderlich sind. In vielen Projekten werden Transaktionen immer in der Service- oder Business-Schicht geöffnet und geschlossen. Die involvierten DAO-Objekte gehen daher immer davon aus, dass bereits eine Transaktion vorhanden ist. Für das Testen bedeutet dies, dass bei DAO-Tests der Test selbst für die Transaktionsverwaltung zuständig ist. Bei dem Testen von Services übernimmt der Service hingegen die Transaktionsverwaltung.

Bei der Erstellung der checkerberry db-Tests ist darauf zu achten, dass alle Transaktionen der zu testenden Komponenten geschlossen werden, bevor checkerberry db die erwarteten Ergebnisse prüft. Anderenfalls bleiben die Änderungen für checkerberry db verborgen. Die folgende Abbildung stellt diesen Sachverhalt dar.

Abbildung 2.38. Transaktionsverhalten

Transaktionsverhalten


In der Abbildung sind die drei Testphasen Setup, Test und Teardown dargestellt. Die Datenbanktransaktion wird in der Setup-Phase geöffnet und in der Teardown-Phase wieder geschlossen. Innerhalb der Test-Phase werden zunächst die zu testenden Funktionen aufgerufen. Danach erfolgt die Überprüfung der erwarteten Testdaten. Da die Datenbanktransaktion erst in der Teardown-Phase geschlossen wird, werden die Datenbankänderungen auch erst zu diesem Zeitpunkt in der Datenbank sichtbar. Aus diesem Grund liefert die Überprüfung der erwarteten Testdaten nicht das gewünschte Ergebnis.

Abbildung 2.39. Angepasstes Transaktionsverhalten

Angepasstes Transaktionsverhalten


Abbildung 2.39, „Angepasstes Transaktionsverhalten“ zeigt die Lösung des zuvor beschriebenen Problems. Bevor die erwarteten Testdaten überprüft werden, muss die Datenbanktransaktion beendet werden. Zu diesem Zweck hat es sich bewährt in der Basis-Testklasse eine Methode zum Schließen der Transaktion zur Verfügung zu stellen. Diese Methode muss dann vor der Überprüfung der erwarteten Testdaten aufgerufen werden.

Das Transaktionsmanagement ist abhängig von den verwendeten Technologien und den fachlichen Anforderungen an die Anwendung. Aus diesem Grund gibt es keine einheitliche Lösung für die Konfiguration.