2009-10-21 6 views
0

J'écris un couple de classes qui génèrent un fichier xml. (Détails probablement pas important pour le moment).stratégies de test: générer un fichier XML

Je me demande quelle est la meilleure stratégie de test.

  • Je ne veux pas réécrire le code de génération xml juste pour comparer la sortie, quand je pouvais écrire le fichier sur le disque et le comparer à certaines étapes (la spécification XML ne changera pas souvent, comme une ou deux fois tous les deux ans)
  • Je suis plus intéressé à tester le comportement de l'architecture au lieu des getters setters &

les options qui viennent à l'esprit:

  • reconstruction du fichier XML dans l'environnement de test et en comparant la chaîne des déclarations auxquels
  • vérifier manuellement le résultat (écriture dans le fichier, etc.)
  • reconstruction du fichier xml en mémoire dans l'environnement de test et en comparant les éléments en mémoire.

Bonus virtuel si vous connaissez des bibliothèques pour C++ et/ou Google Test.

Des idées?

+0

J'ai édité ma réponse pour inclure une bibliothèque C++. – bobbymcr

Répondre

3

Avez-vous envisagé d'utiliser des XSD et de valider votre XML vers le XSD? Vous n'avez pas mentionné si c'était le contenu ou la structure que vous étiez en train de tester (probablement les deux).
Si elle valide, elle testera la structure du XML sera conforme à la structure requise.

+0

tester les deux, la validation via XSD semble être une bonne idée aussi. (+1) – cbrulak

+0

Je dois être d'accord avec la validation XSD. Vous étiez "supposé" avoir le XSD de toute façon, il suffit donc de valider le XML en utilisant le XSD.Si vous ne l'avez pas déjà fait, cela vous ferait certainement gagner du temps. – Eduardo

1

Vous pourriez envisager un outil de comparaison XML. Il y en a un disponible gratuitement sur MSDN: XML Diff and Patch Tool.

Je vois que vous cherchez des outils C++. Dans ce cas, libxmldiff pourrait être plus approprié.

+0

peut-il être ajouté au processus de construction automatisé facilement? – cbrulak

+0

Oui, il contient un léger wrapper EXE "XmlDiff.exe"; quelques informations ici: http://my.safaribooksonline.com/0596003978/netxml-CHP-13-SECT-2 – bobbymcr

1

Vous pouvez envisager d'utiliser l'unité XML: http://xmlunit.sourceforge.net. Il fournit des classes d'extension JUnit qui peuvent être utilisées pour affirmer l'égalité de fichiers XML.

+0

+1 pour la recommandation de tester lib, connaissez-vous ceux qui fonctionnent en C++ et/ou GoogleTest? – cbrulak

2

Dans le passé, je l'ai approché ces deux façons:

Comparez le fichier xml contre le résultat stocké sous forme de chaîne dans le fichier de test. Cela est facile à mettre en œuvre et, à moins que vous ne souhaitiez générer des variantes du fichier xml à des fins de test, la méthode de comparaison de chaînes fonctionne correctement.

Dans le cas où vous avez un graveur et un lecteur de fichiers xml, vous pouvez comparer l'original au résultat d'aller-retour. Je suis d'accord avec vous que vous ne devez pas répliquer la logique pour générer le fichier dans la fonction de test, juste à des fins de test. En outre, j'essaierais d'éviter le besoin d'écrire dans le système de fichiers - ceci est une dépendance inutile sur le système de fichiers, et entraînerait probablement des tests plus lents.

Questions connexes