Question

J'écris deux classes qui génèrent un fichier xml. (Détails probablement pas d'importance pour le moment).

Je demandais la meilleure stratégie de test est.

  • 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 et setters

Les options qui viennent à l'esprit:

  • la reconstruction du fichier XML dans l'environnement de test et la comparaison des représentations de chaîne
  • vérifier manuellement le résultat (écriture dans le fichier, etc)
  • la 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?

Était-ce utile?

La solution

Avez-vous envisagé d'utiliser de XSD et la validation de votre XML au XSD? Vous n'avez pas mentionné si elle était le contenu ou la structure que vous testez (probablement les deux).
Si elle valide, il testera la structure du XML sera conforme à la structure requise.

Autres conseils

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 êtes désireux de générer des variations du fichier xml pour des fins de test, la méthode de comparaison de chaînes fonctionne très bien.

Dans le cas où vous avez un graveur de fichier xml et le lecteur, vous pouvez comparer l'original avec le résultat aller-retour.

Je suis d'accord avec vous que vous ne devriez pas reproduire la logique pour générer le fichier dans la fonction de test, juste pour les besoins des tests. De plus, je voudrais essayer d'éviter la nécessité d'écrire dans le système de fichiers -. C'est la dépendance unecessary sur le système de fichiers, et entraînerait probablement des tests de fonctionnement plus lent

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

Vous pourriez envisager un outil de diff XML. Il y a un gratuit disponible sur MSDN: XML diff et patch outil .

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

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