2.4.16. Einspielen von Testdaten temporär unterdrücken

Bei der Entwicklung von Tests oder bei der Fehleranalyse tritt häufig die Situation auf, dass ein einzelner Test in der lokalen Entwicklungsumgebung mehrmals hintereinander ausgeführt wird. Dies bedeutet insbesondere, dass auch die initialen Testdaten bei jedem Durchlauf neu in die Datenbank eingespielt werden. Das erneute Einspielen der Testdaten kann jedoch überflüssig sein, wenn die zu testende Funktionalität die Testdaten nicht verändert. Aus diesem Grund bietet checkerberry db die Möglichkeit, das Laden der Testdaten zu verhindern bzw. einzuschränken.

Beispiel 2.51. Skip-Annotationen

// Das Einspielen der initialen Testdaten unterbinden: Die Datenbank ist
// noch in dem benötigten Zustand.
@SkipDbSetUp
public void testAnything() throws Exception {
  …
}
// Das Einspielen der cacheable Tabellen unterbinden: Der Cache enthält noch
// die benötigten Informationen.
@SkipImportCacheableTables
public void testAnythingElse() throws Exception {
  …
}


Das obige Beispiel zeigt die Verwendung der beiden Annotationen zur Manipulation der Testdateneinspielung. In Abhängigkeit der zu testenden Anwendung können sehr große Datenmengen in den initialen Testdaten vorhanden sein. Die Verwendung dieser Annotation kann somit das Laden von großen Datenmengen unterbinden, was die Geschwindigkeit der Testdurchführung erhöht.

Abbildung 2.35. Setup-Phase ohne Skip-Annotationen

Setup-Phase ohne Skip-Annotationen


Die obige Abbildung skizziert das Verhalten von checkerberry db in der Setup-Phase. Zunächst werden initiale Testdaten eingelesen. Danach werden die cacheable Tabellen in die Datenbank eingespielt, sofern sie noch nicht im Cache vorhanden sind. Ist eine Tabelle im Cache vorhanden, werden die zugehörigen Daten nicht erneut in die Datenbank eingespielt. Danach werden die restlichen Testdaten in die Datenbank eingespielt.

2.4.16.1. Einspielen der initialen Testdaten unterdrücken

Durch die Markierung einer Testmethode mit der Annotation SkipDbSetUp wird das Einspielen der Testdaten vollständig unterdrückt. Die Verwendung ist lediglich sinnvoll, wenn die zu testende Komponente die Datenbank nicht ändert und wenn der Datenbankinhalt vor der Testausführung bereits korrekt ist.

Abbildung 2.36. Setup-Phase mit SkipDbSetup

Setup-Phase mit SkipDbSetup


Die obige Abbildung skizziert das Verhalten von checkerberry db in der Setup-Phase, wenn die Annotation SkipDbSetup gesetzt ist. Sowohl das Einspielen der cacheable als auch das Einspielen aller anderen Tabellen wird unterdrückt. Der Datenbankinhalt wird somit nicht aktualisiert, obwohl initiale Testdaten vorhanden sind.