HSQLDB es genial. (También) tiene un modo incrustado (no se necesita un servidor dedicado), lo que permite la creación rápida de prototipos de cosas como Prueba de conceptos, y también puede ser excelente en aplicaciones listas para producción, como un almacenamiento rápido y simple de varios datos.
Sin embargo, al menos el 90% de los proyectos en los que he trabajado en los últimos años, si tratan de alguna manera con una base de datos SQL, inevitablemente tendrán pruebas unitarias que usan un HSQLDB incorporado.
Efectivamente, estos proyectos (que utilizan la estructura estándar de Maven la mayoría de las veces), tienen un montón de "pruebas unitarias" (o, al menos, algún tipo de pruebas, pero que se encuentran en el área de "pruebas unitarias" del proyecto (como "src / test / java")) que usa una o más instancias incrustadas de HSQLDB para realizar algunas operaciones CRUD y verificar los resultados.
Mi pregunta es: ¿es esto un antipatrón? ¿El hecho de que HSQLDB es fácil de integrar y el servidor incorporado es muy liviano hace que pueda pasarse por alto como "maqueta" de una base de datos real, cuando no debería ser el caso? ¿No deberían tratarse tales pruebas más como pruebas de integración (dado que cada una de ellas está compuesta de "algo" Y la integración de ese "algo" con un servidor de base de datos)? ¿O me falta algo en la definición de "prueba unitaria", y de hecho podemos decir que el uso de HSQLDB como este simplemente se adhiere a la parte "simulacro de dependencias y prueba solo la unidad" de la definición "prueba unitaria"?