2

私の質問は:

JUnitで、ファイルシステムに物理的に保存されているXMLファイルからSUTを読み取らせずに、テスト対象システム(SUT)のxmlデータを設定するにはどうすればよいですか?

背景

請求書の作成規則を含むXMLファイルが提供されます。私の仕事は、これらのルールをXMLからJavaオブジェクトに変換することです。たとえば、XMLファイルに以下のようなタグがあり、30日が経過すると、トランザクションに請求できないことを示します。

<ExpirationDay>30</ExpirationDay> 

これはJavaクラスに変換されます。たとえばExpirationDateInvoicingRule

XMLファイルを取得して*InvoicingRuleオブジェクトを作成するクラスInvoiceConfigurationがあります。StAXを使用してInvoiceConfiguration内のXMLドキュメントを解析することを考えています

問題:

InvoiceConfigurationの単体テストをしたい。しかし、InvoiceConfigurationがファイルシステム上のxmlファイルから物理的に読み取ることは望ましくありません。単体テストを、物理的に保存されているxmlファイルから独立させたい。メモリ内にxml表現を作成したいと思います。ただし、StAXパーサーはFileReaderのみを使用します(またはファイルオブジェクトで遊ぶことができます)

4

3 に答える 3

0

皆さんの助けに感謝します。もう1つの優れたソースは、次のリンクです:http: //marc.info/?l=xerces-j-dev&m=86952145010437&w=2

これはBaqHaidriからの回答です

-----元のメッセージ-----差出人:Baq Haidri [mailto:bhaidri @ ....]

これは、Wrox出版の「ProfessionalXML」という本で見つかりました。

>
>public void parseString(String s) throws SAXException, IOException
>{
>         StringReader reader = new SringReader(s);
>         InputSource source = new InputSource(reader);
>         parser.parse(source);
>}

于 2010-06-26T22:51:34.063 に答える
0

コードをリファクタリングして、ファイルを開く代わりにリーダーを取得します。ファイルを開くことは個別に行うことができます(単体テストでファイルにアクセスしないというルールに固執したい場合は、ほとんどテストできませんが、1行であり、実際に誤解することはないため、問題ありません!)

于 2010-06-10T20:54:04.230 に答える
0

これは、XMLUnitとカスタムフレームワークの両方を使用してXMLを処理するかなりの数のテストの例です。フレームワークはStAXを使用してXMLをJavaPOJOにマップします。

https://simple.svn.sourceforge.net/svnroot/simple/trunk/download/stream/src/test/java/org/simpleframework/xml/core/

外部依存関係はなく、テストカバレッジは約90%です

http://simple.sourceforge.net/download/stream/report/cobertura/

于 2010-06-10T21:18:36.440 に答える