HSQLDB è fantastico. Ha anche una modalità incorporata (non è necessario alcun server dedicato), che consente la prototipazione rapida di elementi come Proof of Concepts, e può anche essere ottima nelle applicazioni pronte per la produzione, come una memorizzazione rapida e semplice di vari dati.
Tuttavia, almeno il 90% dei progetti su cui ho lavorato negli anni passati, se hanno in qualche modo a che fare con un database SQL, avranno inevitabilmente test unitari che utilizzano un HSQLDB incorporato.
Certo, questi progetti (che usano la struttura standard di Maven il più delle volte), hanno una tonnellata di "unit test" (o, almeno, qualche tipo di test, ma che si trovano nella test "area del progetto (come" src / test / java ")) che usa una o più istanze incorporate di HSQLDB per fare alcune operazioni CRUD e controllare i risultati.
La mia domanda è: è un anti-pattern? Il fatto che HSQLDB sia facile da integrare e il server embedded sia molto leggero fa sì che possa essere trascurato come "mock-up" di un vero database, quando non dovrebbe essere il caso? Questi test non dovrebbero essere trattati più come test di integrazione (dato che ognuno di essi è composto da "qualcosa" E che l'integrazione di "qualcosa" con un server di database)? Oppure mi manca qualcosa nella definizione di "unit test", e possiamo dire che usando HSQLDB in questo modo si aderisce semplicemente alla "simulazione delle dipendenze e test solo l'unità" della definizione di "unit test"?