26

OutputStreamに直接出力するXML解析Javaクラスのjunitテストを作成しようとしています。たとえば、XmlWriterインスタンス内に保持されている出力ストリームに書き込まれるxmlWriter.writeString("foo");ようなものを生成します。<aTag>foo</aTag>問題は、この動作をどのようにテストするかです。もちろん、1つの解決策は、OutputStreamをFileOutputStreamにして、書き込まれたファイルを開いて結果を読み取ることですが、それほどエレガントではありません。

4

3 に答える 3

29

ByteArrayOutputStreamを使用してから、 toByteArray()を使用してデータを取得します。これは、ストリームへの書き込み方法(一度に1バイトまたは大きなバッファーとして)をテストしませんが、通常は、とにかくそれを気にする必要はありません。

于 2008-10-22T09:55:08.463 に答える
3

それは簡単です。@JonSkeetが言ったように:

ByteArrayOutputStream baos = new ByteArrayOutputStream();
// pass the baos to be writed with "value", for this example
byte[] byteArray = baos.toByteArray();
Assert.assertEquals("value", new String(byteArray));
于 2016-09-13T16:17:07.750 に答える
3

Writer を XmlWriter に渡すことができる場合は、StringWriter. StringWriteron itを使用して の内容を照会できますtoString()

を渡す必要がある場合はOutputStream、を渡すことができ、それをByteArrayOutputStream呼び出しtoString()てその内容を文字列として取得することもできます。

次に、次のようなコードを作成できます。

public void testSomething()
{
  Writer sw = new StringWriter();
  XmlWriter xw = new XmlWriter(sw);
  ...
  xw.writeString("foo");
  ...
  assertEquals("...<aTag>foo</aTag>...", sw.toString());
}
于 2008-10-22T14:03:14.860 に答える