¿Cuál es la forma adecuada de probar el código que utiliza consultas específicas de MySQL internamente?

Estoy recopilando datos y los almaceno en una base de datos MySQL usando Java. Además, uso Maven para construir el proyecto, TestNG como marco de prueba y Spring-Jdbc para acceder a la base de datos. He implementado una capa DAO que encapsula el acceso a la base de datos. Además de agregar datos usando las clases DAO, quiero ejecutar algunas consultas que agregan los datos y almacenan los resultados en otras tablas (como vistas materializadas).

Ahora, me gustaría escribir algunos casos de prueba que verifiquen si las clases DAO están funcionando como deberían. Por lo tanto, pensé en usar una base de datos en memoria que se rellenará con algunos datos de prueba. Como también estoy usando consultas SQL específicas de MySQL para agregar datos, tuve algunos problemas:

En primer lugar, he pensado en utilizar simplemente la funcionalidad de base de datos integrada proporcionada por Spring-Jdbc para crear una instancia de una base de datos integrada. He decidido utilizar la implementación H2. Allí me encontré con problemas debido a las consultas de agregación, que utilizan contenido específico de MySQL (por ejemplo, funciones de manipulación de tiempo como DATE ()). Otra desventaja de este enfoque es que necesito mantener dos archivos ddl: el archivo ddl real que define las tablas en MySQL (aquí defino la codificación y agrego comentarios a las tablas y columnas, ambas características son específicas de MySQL); y el archivo ddl de prueba que define las mismas tablas pero sin comentarios, etc. ya que H2 no admite comentarios.He encontrado una descripción para usar MySQL como una base de datos integrada que puedo usar en los casos de prueba (http://literatitech.blogspot.de/2011/04/embedded-mysql-server-for-junit-testing.html) . Eso me sonó muy prometedor. Desafortunadamente, no funcionó: se produjo un MissingResourceExcpetion "No se encontró el recurso '5-0-21 / Linux-amd64 / mysqld'". Parece que el controlador no puede encontrar el daemon de la base de datos en mi máquina local. Pero no sé qué debo buscar para encontrar una solución para ese problema.

Ahora, estoy un poco atascado y me pregunto si debería haber creado la arquitectura de manera diferente. ¿Alguien tiene algunos consejos sobre cómo configurar un sistema apropiado? Tengo otras dos opciones en mente:

En lugar de usar una base de datos integrada, iré con una instancia de MySQL nativa y configuraré una base de datos que solo se usa para los testcases. Esta opción suena lenta. En realidad, es posible que desee configurar un servidor CI más adelante y pensé que usar una base de datos integrada sería más apropiado ya que la prueba se ejecuta más rápido.Borro todas las cosas específicas de MySQL de las consultas de SQL y uso H2 como una base de datos integrada para las pruebas. Si esta opción es la correcta, necesitaría encontrar otra forma de probar las consultas SQL que agregan los datos en vistas materializadas.¿O hay una tercera opción que no tengo en mente?

Apreciaría cualquier consejo.

Gracias, XComp