HSQLDB ist großartig. Es verfügt (auch) über einen eingebetteten Modus (kein dedizierter Server erforderlich), der ein schnelles Prototyping von Dingen wie Proof of Concepts ermöglicht, und eignet sich auch hervorragend für produktionsbereite Anwendungen als schnelle und einfache Speicherung verschiedener Daten.
Mindestens 90% der Projekte, an denen ich in den letzten Jahren gearbeitet habe, werden unvermeidlich Unit-Tests mit einer eingebetteten HSQLDB durchführen, wenn sie sich in irgendeiner Weise mit einer SQL-Datenbank befassen.
Sicher genug, diese Projekte (die meistens die Standard-Maven-Struktur verwenden) haben eine Menge "Unit-Tests" (oder zumindest eine Art von Tests, die sich jedoch im Bereich "Unit-Test" befinden des Projekts (wie "src / test / java")), die eine oder mehrere eingebettete Instanzen von HSQLDB verwenden, um einige CRUD-Operationen durchzuführen und die Ergebnisse zu überprüfen.
Meine Frage ist: Ist das ein Anti-Muster? Ist es aufgrund der Tatsache, dass HSQLDB einfach zu integrieren und der eingebettete Server sehr leicht ist, so, dass es als "Modell" einer tatsächlichen Datenbank übersehen werden kann, wenn dies nicht der Fall sein sollte? Sollten solche Tests nicht eher wie Integrationstests behandelt werden (da jeder von ihnen aus "etwas" UND der Integration von "etwas" in einen Datenbankserver besteht)? Oder fehlt mir etwas in der "Unit Test" -Definition, und wir können tatsächlich sagen, dass die Verwendung von HSQLDB wie dieser einfach dem "Verspotten der Abhängigkeiten und Testen nur des Unit" -Teils der "Unit Test" -Definition entspricht?