我有一门课,它做以下的事情
class PersonDumper {
// attributes
public PersonDumper(PrintStream output, Set<Person> persons) {
// do stuff
}
public dump() {
for(Person p : persons) {
output.print(p);
output.print(",");
}
}
}问题是,我想测试我给Person对象的格式设置(在示例中,我想打印toString()方法),等等。
然后,我想用这样的方法来测试输出:
public class ListPrintStream extends PrintStream {
private List<List<String>> output;
// every time I call to print I do output.add(string)
}然后,我可以得到该List>并阅读它,以测试我是否输出了我想要的。
但是,对于用于PrintStream的构造函数,我有问题。因为,在我的例子中,我不需要构造函数的任何参数。
你认为我用的是一个好方法吗?我应该使用OutputStream类而不是PrintStream吗?有什么暗示吗?
编辑以问:
有人知道用于测试的PrintStream吗?
发布于 2014-01-27 13:04:36
您可以将一个虚拟输出流传递给超类构造函数,例如Apache的NullOutputStream,它是一个OutputStream实现,它默默地丢弃所有写入它的数据。
或者,您可以考虑声明您的PersonDumper作为Appendable的实例。PrintStream实现了Appendable,所以这不会改变您的代码在正常情况下,但为了测试,您可以通过一个StringBuilder或类似的。
class PersonDumper {
// attributes
public PersonDumper(Appendable output, Set<Person> persons) {
// do stuff
}
public dump() {
for(Person p : persons) {
// String.valueOf rather than .toString to be null-safe
output.append(String.valueOf(p));
output.append(",");
}
}
}https://stackoverflow.com/questions/21381258
复制相似问题