DbUnit per C ++?
-
03-07-2019 - |
Domanda
Stiamo sviluppando in C ++ sotto Linux e stiamo per impostare test automatici. Intendiamo utilizzare un framework di test come CppUnit o CxxTest. Stiamo usando Ant per costruire il software e lo useremo anche per eseguire i test.
Poiché alcuni test prevedono l'accesso al database, stiamo cercando uno strumento o un framework che faciliti le attività di preparazione e pulizia dei dati di test nel database, proprio come DbUnit (un'estensione JUnit) nel mondo Java.
Un'altra opzione potrebbe essere quella di utilizzare la DbUnit effettiva: è disponibile una VM Java. Fare affidamento sul compito Ant di DbUnit sembra essere molto promettente. Tutti i rapporti sul campo correlati sono i benvenuti!
Soluzione 3
Dato che non sembra esserci uno strumento simile a DbUnit per lo sviluppo di C ++, abbiamo creato un piccolo framework tutto nostro. Fondamentalmente è un adattatore per chiamare le operazioni DbUnit effettive all'interno dei testrunner C / C ++. Si avvale delle Task Ant fornite da DbUnit.
Abbiamo definito alcune macro come TS_DB_INSERT (nome file)
che chiamano sistema (" ant -Ddb.dataset = nome file db.inserire ")
e simili.
In questo caso, db.insert
è una destinazione Ant che esegue un'attività DbUnit eseguendo un'operazione INSERT sul database. Il nomefile
fa riferimento a un set di dati XML contenente i dati da inserire.
C'è anche una macro di asserzioni che racchiude un DbUnit compare
.
Il test case potrebbe apparire così:
void testDatabaseStuff
{
TS_DB_INSERT("input.xml");
TestedClass::doSomething();
TS_DB_ASSERT("expected.xml");
}
Altri suggerimenti
Consiglierei unità di boost test . Probabilmente dovresti usare l'installazione e lo smontaggio per pulire manualmente il database. Naturalmente, potresti creare la tua DbUnit C ++ in ODBC. SE me lo fai sapere perché potrei usare anche questo!
Suppongo che tu abbia la tua API C ++ per lavorare con DB. Se è vero, è meglio fare tutta la preparazione del DB da soli. In tal caso testerai anche la tua API DB.