質問

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

役に立ちましたか?

解決

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

他のヒント

WriterをXmlWriterに渡すことができる場合、StringWriterを渡します。 toString()を使用してOutputStreamのコンテンツを照会できます。

ByteArrayOutputStreamを渡す必要がある場合、<=>を渡すことができます。また、<=>を呼び出してその内容を文字列として取得することもできます。

次に、次のようなコードを記述できます:

public void testSomething()
{
  Writer sw = new StringWriter();
  XmlWriter xw = new XmlWriter(sw);
  ...
  xw.writeString("foo");
  ...
  assertEquals("...<aTag>foo</aTag>...", sw.toString());
}

簡単です。 @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));
ライセンス: CC-BY-SA帰属
所属していません StackOverflow
scroll top