Question

Nous développons en C ++ sous Linux et sommes sur le point de mettre en place des tests automatisés. Nous avons l'intention d'utiliser un framework de test tel que CppUnit ou CxxTest. Nous utilisons Ant pour construire le logiciel et nous l’utiliserons également pour exécuter les tests.

Comme certains tests vont impliquer l’accès à une base de données, nous recherchons un outil ou un framework facilitant les tâches de préparation et de nettoyage des données de test dans la base de données, tout comme DbUnit (une extension JUnit) dans le monde Java.

Une autre option consiste à utiliser le DbUnit réel - un ordinateur virtuel Java est disponible. Utiliser la tâche Ant de DbUnit semble être le plus prometteur. Tous les rapports de terrain connexes sont les bienvenus!

Était-ce utile?

La solution 3

Comme il ne semble pas exister d’outil similaire à DbUnit pour le développement C ++, nous avons construit notre propre cadre. Il s’agit essentiellement d’un adaptateur permettant d’appeler des opérations DbUnit réelles à partir d’exécutants de test C / C ++. Il utilise les tâches Ant fournies par DbUnit.

Nous avons défini des macros telles que TS_DB_INSERT (nom du fichier) qui appelle système ("ant -Ddb.dataset = nom du fichier db.insert ") et ainsi de suite.

Dans ce cas, db.insert est une cible Ant qui exécute une tâche DbUnit en effectuant une opération INSERT sur la base de données. Le nom de fichier fait référence à un ensemble de données XML contenant les données à insérer. Il existe également une macro d'assertion qui encapsule un comparer dans DbUnit.

Le scénario de test peut ressembler à ceci:

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

    TestedClass::doSomething();

    TS_DB_ASSERT("expected.xml");
}

Autres conseils

Je recommanderais unité de démarrage tester . Vous devrez probablement utiliser la configuration et le démontage pour nettoyer manuellement la base de données. Bien sûr, vous pouvez créer votre propre unité DbUnit C ++ dans ODBC. SI vous me le faites savoir, je pourrais aussi l'utiliser!

Je suppose que vous avez votre propre API C ++ pour travailler avec DB. Si c'est vrai, vous feriez mieux de préparer vous-même votre base de données. Dans ce cas, vous testerez également votre API de base de données.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top