首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >我自己实现的PrintStream测试

我自己实现的PrintStream测试
EN

Stack Overflow用户
提问于 2014-01-27 12:43:49
回答 1查看 460关注 0票数 0

我有一门课,它做以下的事情

代码语言:javascript
复制
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()方法),等等。

然后,我想用这样的方法来测试输出:

代码语言:javascript
复制
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吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2014-01-27 13:04:36

您可以将一个虚拟输出流传递给超类构造函数,例如Apache的NullOutputStream,它是一个OutputStream实现,它默默地丢弃所有写入它的数据。

或者,您可以考虑声明您的PersonDumper作为Appendable的实例。PrintStream实现了Appendable,所以这不会改变您的代码在正常情况下,但为了测试,您可以通过一个StringBuilder或类似的。

代码语言:javascript
复制
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(",");
        }
    }
}
票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/21381258

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档