我將爲直接輸出到OutputStream的XML解析Java類編寫junit測試。例如,xmlWriter.writeString("foo");
會生成類似<aTag>foo</aTag>
的內容,以寫入保存在XmlWriter實例內的輸出流中。問題是如何測試這種行爲。一種解決方案當然是讓OutputStream成爲FileOutputStream,然後通過打開寫入的文件來讀取結果,但它不是很優雅。測試寫入Java OutputStream的內容
21
A
回答
23
使用ByteArrayOutputStream,然後使用toByteArray()從中獲取數據。這不會測試它如何將寫入流(一次一個字節或作爲一個大緩衝區),但通常你不應該在意這一點。
3
如果您可以將Writer傳遞給XmlWriter,我會將其傳遞給StringWriter
。您可以使用toString()
來查詢StringWriter
的內容。
如果您必須通過OutputStream
,您可以通過ByteArrayOutputStream
,您也可以撥打toString()
以獲取其內容爲字符串。
public void testSomething()
{
Writer sw = new StringWriter();
XmlWriter xw = new XmlWriter(sw);
...
xw.writeString("foo");
...
assertEquals("...<aTag>foo</aTag>...", sw.toString());
}
2
很簡單:
然後,像你可以編寫代碼的東西。正如@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));
相關問題
- 1. Java:通過文件寫入OutputStream
- 2. 提交HTTPServletResponse後寫入outputStream
- 3. 使用離子寫入(outputStream)
- 4. Printwriter沒有寫入outputStream
- 5. Java將測試分數寫入文件
- 6. Java寫入文件測試成績
- 7. 測試ViewPager內容,不接受輸入
- 8. loadHTML($ str)的測試內容
- 9. 寫java testng測試用例
- 10. 測試NullReferenceException(不測試任何內容)
- 11. 作爲管道寫入到Java Process/ProcessBuilder的OutputStream中
- 12. 使用Java中的可變對象將XML數據寫入OutputStream
- 13. 寫入Socket的outputStream w/o關閉它
- 14. 將結構寫入Swift中的outputStream 3
- 15. 併發寫入一個標準的OutputStream
- 16. 將OutputStream寫入文件的代碼
- 17. InputStream寫入OutputStream的時間太長Android
- 18. 如何將ByteBuffer的內容放入OutputStream中?
- 19. 測試網頁內容
- 20. 硒遞歸內容測試?
- 21. 測試內容與功能
- 22. 試圖編寫一個使用OutputStream寫入文本文件的循環
- 23. Android/Java - 如何檢查OutputStream何時完成寫入字節
- 24. Java Transformer:你如何將結果寫入OutputStream?
- 25. 如何在Java中將數組寫入outputStream
- 26. 在java中使用OutputStream將圖像寫入特定文件夾
- 27. 將Excel數據直接寫入OutputStream(限制內存消耗)
- 28. Java - InputStream - 輸入測試
- 29. Android BluetoothSocket OutputStream無限地寫入塊
- 30. 如何使用xuggler寫入outputStream?