Las pruebas de mi unidad utilizan Hibernate para conectarse a una base de datos HSQLDB en memoria. Esperaba que hubiera una forma de limpiar y recrear la base de datos (toda la base de datos, incluidos el esquema y todos los datos) en el método TestCase.setUp()
de JUnit.Borrado de toda la base de datos (para pruebas unitarias con Hibernate)
Respuesta
puede configurar el archivo de configuración de hibernación para obligar a la base de datos a volver a crear las tablas y el esquema cada vez.
<!-- Drop and re-create the database schema on startup -->
<property name="hbm2ddl.auto">create-drop</property>
hibernate.hbm2ddl.auto valida automáticamente o exportaciones DDL de esquema para la base de datos cuando se crea la SessionFactory. Con create-drop, el esquema de la base de datos se eliminará cuando SessionFactory se cierre explícitamente.
p. Ej. validar | actualización | crear | create-drop
si no desea tener esta configuración en su configuración real de hibernación, puede crear una configuración de hibernación para la prueba de la unidad.
Esto solo lo recrea cada ejecución. Esto significa que si está ejecutando sus pruebas de eclipse, fallarán muchas y eso pasaría si se ejecutara solo. Al menos esta es mi experiencia. –
hibernate.hbm2ddl.auto=create-drop
Y arranca un nuevo SessionFactory
.
¿cómo se hace esto cuando se usa solo JPA? – Konsumierer
Si está utilizando Spring, puede usar el atributo @Transactional en su unidad de prueba, y de forma predeterminada, al final de cada prueba unitaria, todos los datos persistentes se revertirán automáticamente para que no tenga que preocuparse por dejar caer el tablas cada vez.
me haa caminaron throug un ejemplo aquí http://automateddeveloper.blogspot.com/2011/05/hibernate-spring-testing-dao-layer-with.html
Desde la perspectiva de pruebas, la mejor práctica es para borrar los datos después de cada prueba individual. Si usa crear-soltar, también soltará el esquema de la tabla. Esto provoca una sobrecarga al recrear el esquema cada vez.
Dado que está utilizando hsql, que proporciona un mecanismo directo para truncar, sería la mejor opción en este caso.
@After
public void clearDataFromDatabase() {
//Start transaction, based on your transaction manager
dao.executeNativeQuery("TRUNCATE SCHEMA PUBLIC AND COMMIT");
//Commit transaction
}
tener cuidado con que limpia el mundo y empezar de nuevo cada vez. Pronto, es probable que desee comenzar con un conjunto "predeterminado" de datos de prueba cargados en su sistema. Por lo tanto, lo que realmente desea es volver a ese estado base antes de ejecutar cada prueba. En este caso, desea una transacción que retrocede antes de cada ejecución de prueba.
Para lograr esto, se debe anotar la clase JUnit:
@RunWith(SpringJUnit4ClassRunner.class)
@ContextConfiguration(locations={"classpath:/path/to/spring-config.xml"})
@TransactionConfiguration(transactionManager="myTransactionManager", defaultRollback=true)
public class MyUnitTestClass {
...
}
Y luego anotar cada uno de sus métodos de prueba con @Transactional:
@Transactional
@Test
public void myTest() {
...
}
- 1. NoSQL - ¿Cómo simular la base de datos para pruebas unitarias?
- 2. Pruebas unitarias: base de datos y dispositivos
- 3. Pruebas unitarias: Configuración de la base de datos para las pruebas
- 4. Creación de datos falsos para pruebas unitarias
- 5. Base de datos de pruebas unitarias Aplicaciones .NET
- 6. Pruebas Unitarias Dirigidas por Datos
- 7. Pruebas unitarias ASP.NET MVC con datos
- 8. Pruebas unitarias con singletons
- 9. Bases de datos de pruebas unitarias
- 10. Android: Eliminar toda la base de datos
- 11. Cómo escribir pruebas unitarias para llamadas a bases de datos
- 12. Borrado de la base de datos de prueba entre la unidad y las pruebas funcionales en Rails (factory_girl)
- 13. Pruebas unitarias con Mockito
- 14. ¿Pruebas unitarias o pruebas de integración?
- 15. Pruebas unitarias con Oracle
- 16. Comenzando con Pruebas unitarias
- 17. Marco de pruebas unitarias para bases de datos
- 18. Pruebas unitarias con ServiceLocator
- 19. Pruebas unitarias para malloc()
- 20. Hibernate consultas en la base de datos
- 21. Pruebas unitarias Aplicaciones Dababase
- 22. ¿Cuál es la mejor forma de ejecutar HSQLDB para pruebas unitarias, cuando se trabaja con Spring, Maven e hibernate?
- 23. ¿Por qué no golpear la base de datos dentro de las pruebas unitarias?
- 24. Usando StructureMap con pruebas unitarias
- 25. Tutorial para pruebas unitarias con VS 2010
- 26. ¿Qué pruebas con las pruebas unitarias?
- 27. Configurar las aplicaciones Spring JPA con Hibernate para pruebas unitarias (carga lenta)
- 28. pruebas unitarias para raspar pantallas?
- 29. ¿Pruebas unitarias de métodos vacíos?
- 30. Solicitud Force Hibernate para acceder a la base de datos
Si está probando su base de datos, a continuación, se imo no es prueba unitaria – Jamie
Estoy probando mi programa que usa la base de datos. –
Estoy probando una clase que se utiliza para acceder a los datos en la base de datos – Lu55