Beim Einspielen der initialen Testdaten leert checkerberry db alle
Tabellen, die in der DTD definiert sind. Danach werden die initialen
Testdaten eingespielt. Möchte man einen Test mit leerer Datenbank
starten, kann man somit eine Datei mit leeren Initialdaten angeben.
Alternativ kann man die Annotation ClearTables
nutzen. Die Verwendung der Annotation hat den Vorteil, dass die
Information explizit am Test angegeben wird. Des Weiteren entfällt die
explizite Erstellung einer leeren initialen Testdatei.
Bei der Kombination von initialen Testdaten und
ClearTables
-Annotationen gilt folgendes
Verhalten:
Es ist keine ClearTables
-Annotation
vorhanden:
Sind initiale Testdaten für die Methode definiert, werden diese eingespielt.
Sind initiale Testdaten für die Klasse definiert, werden diese eingespielt.
Sind keine initialen Testdaten definiert, wird der Datenbankinhalt nicht verändert.
Es ist eine ClearTables
-Annotation an der
Methode annotiert:
Sind initiale Testdaten für die Methode definiert, wird
die checkerberry Fehlermeldung CB-DB-1043
erzeugt. Da nicht klar ist, ob die Methode initiale Testdaten
einspielen oder die Datenbank leeren soll, kann dieser
Konflikt nicht automatisch aufgelöst werden.
Sind initiale Testdaten für die Klasse definiert, wird die Datenbank dennoch geleert, da das für die Methode definierte Verhalten das für die Klasse definierte Verhalten überschreibt.
Sind keine initialen Testdaten definiert, wird der Datenbankinhalt geleert.
Es ist eine ClearTables
-Annotation an der
Klasse annotiert:
Sind initiale Testdaten für die Methode definiert, werden diese eingespielt, da das für die Methode definierte Verhalten das für die Klasse definierte Verhalten überschreibt.
Sind initiale Testdaten für die Klasse definiert, wird
Fehlermeldung CB-DB-1042
erzeugt. Da nicht
klar ist, ob die Klasse initiale Testdaten einspielen oder die
Datenbank leeren soll, kann dieser Konflikt nicht automatisch
aufgelöst werden.
Sind keine initialen Testdaten definiert, wird der Datenbankinhalt geleert.
Die folgenden Code-Beispiele demonstrieren die Verwendung der
ClearTables
-Annotation.
Beispiel 2.35. ClearTables Annotation an Methode
public class ClearTablesAnnotatedMethodTest { @Test @ClearTables public void testAnnotated() { // Sind für diese Methode Initialdaten definiert, // schlägt der Test bereits im SetUp fehl. // Wenn nicht, wird der Datenbankinhalt geleert. } }
Beispiel 2.36. ClearTables-Annotation an Klasse
@ClearTables public class ClearTablesAnnotatedClassTest { @Test public void testAnnotated() { // Sind für diese Methode Initialdaten definiert, // werden diese eingespielt. // Wenn nicht und für die Klasse sind Initialdaten definiert, // dann schlägt der Test bereits im SetUp fehl. // Sind weder auf Klassen- noch auf Methodenebene Initialdaten // definiert, wird der Datenbankinhalt geleert. } }
Zur Performance-Optimierung können Tabellen von checkerberry db
gecacht werden (siehe Abschnitt 2.4.14, „Performance-Optimierung durch Caching von Tabellen“). Per Default wird die
ClearTables
-Annotation so interpretiert, dass die
Inhalte aller Tabellen gelöscht werden. Dies betrifft insbesondere auch
gecachte Tabellen. Möchte man den Cache durch die
ClearTables
-Annotation nicht löschen, kann die
Annotation mit dem Attribut
@ClearTables(TableTypes.NON_CACHEABLE)
verwendet
werden.