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!

È stato utile?

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.

Autorizzato sotto: CC-BY-SA insieme a attribuzione
Non affiliato a StackOverflow
scroll top