ventajas tutorial instalar desventajas java unit-testing hsqldb

java - tutorial - Inspeccionar en la memoria hsqldb mientras se depura



hsqldb vs h2 (4)

Estamos usando hdsqldb en la memoria para ejecutar pruebas junit que operan en una base de datos. El db se configura antes de ejecutar cada prueba a través de una configuración de resorte. Todo funciona bien Ahora, cuando falla una prueba, puede ser conveniente poder inspeccionar los valores en la base de datos de la memoria. es posible? ¿Si es así, cómo? Nuestra url es:

jdbc.url = jdbc: hsqldb: mem: testdb; sql.enforce_strict_size = true

La base de datos se destruye después de cada prueba. Pero cuando el depurador se está ejecutando, la base de datos también debería estar activa. Intenté conectarme con el administrador de base de datos sqldb. Eso funciona, pero no veo tablas ni datos. ¡Cualquier ayuda es muy apreciada!


Ejecute su prueba unitaria en un punto de interrupción, luego, en la perspectiva de depuración de Eclipse, abra la vista Mostrar (Ventana, Mostrar vista, Pantalla) e ingrese

org.hsqldb.util.DatabaseManagerSwing.main(new String[] { "--url", "jdbc:hsqldb:mem:testdb", "--noexit" });

(según la publicación de dimdm), resáltalo, haz clic con el botón derecho y elige Ejecutar.


En su prueba de unidad o en el @Before / setUp() , puede agregar la siguiente línea para iniciar el Administrador de base de datos HSQL:

org.hsqldb.util.DatabaseManager.main(new String[] { "--url", "jdbc:hsqldb:mem:testdb", "--noexit" });

o para la versión mejorada Swing

org.hsqldb.util.DatabaseManagerSwing.main(new String[] { "--url", "jdbc:hsqldb:mem:testdb", "--noexit" });

El administrador de base de datos le permite inspeccionar su esquema y ejecutar consultas SQL en la base de datos en memoria en vivo mientras se ejecuta la aplicación.

Asegúrese de establecer un punto pico o detener la ejecución de una manera u otra si desea verificar el estado de su base de datos en una línea específica.


HSQL está en memoria, así que cuando diga que se está conectando con el Administrador de base de datos SQLDB, no lo está: se está conectando a otra base de datos en el espacio de memoria del Administrador de bases de datos SQLDB, no al que está en el espacio de memoria del prueba de unidad. Esta es la razón por la cual la base de datos en el Administrador de base de datos SQLDB está vacía.

Puede ejecutar HSQL como un servidor usando org.hsqldb.Server como se describe aquí .

Aunque la clase org.hsqldb.Server se utiliza normalmente para iniciar un proceso independiente, puede crear una instancia y configurarla en su prueba de unidad, lo que debería permitir que un proceso remoto se conecte y consulte la base de datos.

Alternativamente, tendrá que escribir algún tipo de funcionalidad de volcado que se llame desde su unidad de prueba según sea necesario.

Como un lado, el uso de HSQL en pruebas unitarias está probando que su código funciona en contra de HSQL, que es diferente a la base de datos real. Esto significa que puede obtener falsos positivos y viceversa. Lo mismo se puede lograr con una API burlona o mejor, guarde las pruebas de base de datos para algunas pruebas de integración decentes que funcionan con la base de datos real.


También puede usar la clase DatabaseManagerSwing incluida en [HSQLDB] [1], transfiriéndole una conexión abierta, que le permite ver el estado de la base de datos en la transacción en la que se encuentra la conexión.

DatabaseManagerSwing manager = new DatabaseManagerSwing(); manager.main(); manager.connect(connection); manager.start();