質問
XMLファイルを生成するクラスをいくつか書いています。 (詳細はおそらく現時点では重要ではありません)。
最良のテスト戦略はそうだと思います。
- ファイルをディスクに書き込み、特定のマイルストーンで比較できるときに、出力を比較するためだけにXML生成コードを書き直したくありません(XML仕様は頻繁に変更されません。年
- 私はゲッターとセッターの代わりにアーキテクチャの動作をテストすることにもっと興味があります
思い浮かぶオプション:
- テスト環境でXMLファイルを再構築し、文字列表現を比較する
- 結果を手動で確認する(ファイルなどに書き込み)
- テスト環境でメモリ内のXMLファイルを再構築し、メモリの要素を比較します。
C ++および/またはGoogleテストのライブラリを知っている場合、仮想ボーナス。
アイデア?
解決
XSDを使用してXMLをXSDに検証することを検討しましたか?テストしていたコンテンツまたは構造であるかどうかについては言及しませんでした(おそらく両方)。
検証すると、XMLの構造が必要な構造に適合します。
他のヒント
過去に私はこの2つの方法にアプローチしました:
テストファイルに文字列として保存されている結果とXMLファイルを比較します。これは簡単に実装できます。テスト目的でXMLファイルのバリエーションを生成したい場合を除き、文字列比較方法は正常に機能します。
XMLファイルライターとリーダーがいる場合、オリジナルを往復結果と比較できます。
テストの目的で、テスト関数でファイルを生成するためにロジックを複製してはならないことに同意します。また、ファイルシステムに書き込む必要性を避けようとします。これはファイルシステムへの不必要な依存性であり、おそらく実行テストが遅くなるでしょう。
XMLユニットの使用を検討する場合があります。 http://xmlunit.sourceforge.net。 XMLファイルの平等を主張するために使用できるJunit拡張クラスを提供します。
XML DIFFツールを検討する場合があります。 MSDNで利用できる無料のものがあります: XML DIFFおよびパッチツール.
C ++ツールを探しているようです。その場合、 libxmldiff より適しているかもしれません。