DbUnit para C ++?

votos
0

Estamos desarrollando en C ++ bajo Linux y estamos a punto de configurar pruebas automatizadas. Tenemos la intención de usar un marco de prueba como CppUnit o CxxTest. Estamos usando Ant para construir el software y también lo usaremos para ejecutar las pruebas.

Como algunas pruebas van a involucrar el acceso a la base de datos, estamos buscando una herramienta o marco que facilite las tareas de preparación y limpieza de datos de prueba en la base de datos, al igual que DbUnit (una extensión JUnit) en el mundo Java.

Otra opción puede ser emplear la DbUnit real: hay una máquina virtual Java disponible. Hacer uso de la tarea Ant de DbUnit parece ser más prometedor. ¡Cualquier informe de campo relacionado es bienvenido!

Publicado el 02/03/2009 a las 10:15
por usuario
En otros idiomas...                            


3 respuestas

votos
0

Supongo que tienes tu propia API de C ++ para trabajar con DB. Si es verdad, será mejor que hagas tu preparación de base de datos por tu cuenta. En ese caso, también probarás tu DB API.

Respondida el 02/03/2009 a las 11:39
fuente por usuario

votos
2

Recomendaría probar la unidad de impulso . Probablemente tendrías que usar la configuración y el desmontaje para limpiar manualmente la base de datos. Por supuesto, puedes construir tu propia C ++ DbUnit en ODBC. ¡SI me lo dices porque podría usar esto también!

Respondida el 02/03/2009 a las 14:11
fuente por usuario

votos
0

Como parece que no hay una herramienta similar a DbUnit para el desarrollo de C ++, hemos creado un pequeño marco propio. Básicamente es un adaptador para llamar operaciones reales de DbUnit desde C / C ++ testrunners. Hace uso de las tareas Ant proporcionadas por DbUnit.

Definimos algunas macros como TS_DB_INSERT IGNORE (filename)call system("ant -Ddb.dataset=filename db.insert")y similares.

En este caso, db.insertes un objetivo Ant el que ejecuta una tarea DbUnit que realiza una operación INSERT IGNORE en la base de datos. Las filenamereferencias son un conjunto de datos XML que contiene los datos para insertar. También hay una macro de aserción que envuelve una DbUnit compare.

El caso de prueba podría verse así:

void testDatabaseStuff
{
    TS_DB_INSERT IGNORE ("input.xml");

    TestedClass::doSomething();

    TS_DB_ASSERT("expected.xml");
}
Respondida el 14/03/2009 a las 17:46
fuente por usuario

Cookies help us deliver our services. By using our services, you agree to our use of cookies. Learn more