gpt4 book ai didi

java - 我自己的 PrintStream 测试实现

转载 作者:行者123 更新时间:2023-11-28 21:31:17 24 4
gpt4 key购买 nike

我有一个类执行以下操作

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 吗?

最佳答案

您可以将虚拟输出流传递给父类(super class)构造函数,例如 NullOutputStream from Apache commons-io ,这是一个 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(",");
}
}
}

关于java - 我自己的 PrintStream 测试实现,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/21381258/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com