Reader r = new StringReader(goodRSSData); Writer w = new StringWriter(); PrintRSS.formatReader(r, w);
assertEquals(goodRSSOutput, w.toString()); 上面的示例只用readers和writers在沒有URL和網絡連接的情況下測試了解析和格式化邏輯。測試示例演示了一個有用的測試方法:創建的reader流將測試數據包含在測試代碼中而不是從文件或者網絡讀取數據。實踐證實StringReader和StringWriter(或者 ByteArrayInputStream 和ByteArrayOutputStream)在把測試數據嵌入到單元測試流方面是沒有價值的。 上述的單元測試在一切都正常時執行一定的邏輯進行觀察,但它對問題出現錯誤處理代碼同樣重要。接下來,就是一個測試壞數據的示例,其中巧妙的使用了Junit來檢查是否出現異常: testFormatReaderBadData(): String badXMLData = "this is not valid xml data"; StringReader r = new StringReader(badXMLData);
try { PrintRSS.formatReader(r, new StringWriter()); fail("should have thrown XML error"); } catch (XMLParseException ex) { // No error, we eXPected an exception } readers 和 writers再次封裝數據。