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