【发布时间】:2011-09-17 14:07:12
【问题描述】:
“输出流”是指接收字节序列或字符或其他任何内容的任何对象。所以,java.io.OutputStream,还有java.io.Writer、javax.xml.stream.XMLStreamWriter的writeCharacters方法等等。
我正在为一个类编写基于模拟的测试,该类的主要功能是将数据流写入其中之一(XMLStreamWriter,碰巧)。
问题在于数据流是在一系列对 write 方法的调用中写入的,但重要的不是调用,而是数据。例如,给定一个 XMLStreamWriter out,这些:
out.writeCharacters("Hello, ");
out.writeCharacters("world!");
等价于:
out.writeCharacters("Hello, world!");
发生什么(就我的目的而言)真的无关紧要。会有一些特定的调用序列,但我不在乎它是什么,所以我不想为那个特定序列写期望。我只是希望以任何方式写入某个数据流。
一种选择是切换到基于状态的测试。我可以将数据累积在缓冲区中,并对其进行断言。但是因为我正在编写 XML,这将意味着做出一些相当复杂和丑陋的断言。模拟似乎是处理更大的 XML 编写问题的更好方法。
那么我如何使用模拟来做到这一点?
我正在使用 Moxie 进行模拟,但我有兴趣了解任何模拟库的方法。
【问题讨论】:
标签: java stream mocking outputstream