Erweitertes Beispiel: Unitils mit Java Persistence API
Einleitung:
Dieses Beispiel soll JPA Tests mit Unitils veranschaulichen.
Dafür wird das einführende Beispiel erweitert, um die
Persistierung von dem "Object-Rational Mapping" (ORM) Framework
Hibernate verwalten zu lassen.
Unitils soll dabei die Konfiguration der Datenbank-Verbindung
und Vorbereitung der Datenbank erleichtern.
Vorbereitung:
Als Basis dient das einführende Beispiel, das um eine
"Persistence Unit", eine Unitils "properties" Datei, eine Entity
Klasse "Ergebnis" und eine Testklasse mit zugehörigem DbUnit
Datensatz erweitert wird.
Außerdem müssen die entsprechenden Unitils Bibliotheken
für JPA Tests mit eingebunden werden.
NetBeans Projekt Download.
Nach dem Öffnen des Projektes, muss eventuell die
"unitils.properties" Datei an die verwendete Datenbank
angepasst werden:

Auch muss in der "persistence.xml" eine vorhandene und passende
Datenquelle (Datenbank) ausgewählt sein.

Testklasse: DBTests.java
Erklärung des Tests:
Der Test legt einen Entity Manager an und nutzt das JPA Framework
zum Persistieren einer Gewinnzahl, verpackt in einem Entity Objekt,
in der Datenbank.
Als nächstes überprüft der Testfall, ob die Zahl
tatsächlich in der Datenbank vorhanden ist.
DbUnit sollte dabei den Datensatz aus DBTests.xml in die Datenbank
laden, bevor der entsprechend annotierte Test ausgeführt wird.
Datensatz: DBTests.xml
Durchführung:
Der Testfall kann wie ein normaler JUnit Test ausgeführt werden.
Probleme:
Beim Durchführen der Tests stößt man auf einige Probleme.
Die auf Annotationen basierende Initialisierung des Entity Managers
verursacht Nullpointer-Exceptions.
Dagegen hilft die Verwendung des "UnitilsHibernatePersistenceProvider".
Ein weiteres Problem taucht bei der gemeinsamen Verwendung von Hibernate
JPA mit DbUnit auf.
Die Frameworks scheinen sich gegenseitig zu blockieren und führen
zum Scheitern des Tests.
Aus diesem Grund ist die DbUnit Datenbankverwaltung in dem Testfall
auskommentiert, bis eine Lösung gefunden wird.