Java OutputStreamに書き込まれる内容のテスト
-
03-07-2019 - |
質問
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));
所属していません StackOverflow