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再次封装数据。