O HSQLDB é ótimo. Ele (também) possui um modo incorporado (não é necessário um servidor dedicado), que permite a rápida criação de protótipos de coisas como Prova de Conceitos, e também pode ser ótimo em aplicativos prontos para produção, como um armazenamento rápido e simples de vários dados.
No entanto, pelo menos 90% dos projetos em que trabalhei nos últimos anos, se eles lidarem de alguma forma com um banco de dados SQL, inevitavelmente terão testes de unidade que usam um HSQLDB incorporado.
Certamente, esses projetos (que usam a estrutura padrão do Maven na maioria das vezes) têm uma tonelada de "testes de unidade" (ou, pelo menos, algum tipo de teste, mas que estão localizados na área "teste de unidade" do projeto (como "src / test / java")) que usa uma ou mais instâncias incorporadas do HSQLDB para executar algumas operações CRUD e verificar os resultados.
Minha pergunta é: isso é um anti-padrão? O fato de o HSQLDB ser fácil de integrar e o servidor incorporado ser muito leve faz com que seja negligenciado como "mock-up" de um banco de dados real, quando não deveria ser o caso? Esses testes não deveriam ser tratados mais como testes de integração (já que cada um deles é composto por "algo" E essa integração de "algo" com um servidor de banco de dados)? Ou estou faltando alguma coisa na definição de "teste de unidade" e podemos dizer que o uso do HSQLDB como esse simplesmente adere à "simulação das dependências e testa apenas a parte" unitária "da definição de" teste unitário "?