我正在Netbeans IDE
编写一个单元测试包。现在我将执行语句流打印到System.out
,同时将错误语句打印到System.error
。现在,由于它们是两个不同的流,因此它们无序打印。我的意思是他们不打印同步。我知道flush
方法会立即打印语句,但是在每个这样的语句之后写这个语句都很乏味。如何配置事先要立即刷新的流。可能是单元测试的开始?。
我想要这个,因为我想利用两种不同的颜色,Netbeans
显示两个输出流。
此外,我的方法中的任何错误点和我们非常欢迎改善建议。
答案 0 :(得分:2)
可能还有另一种可能性,所以试一试:
import java.io.FileDescriptor;
import java.io.FileOutputStream;
import java.io.IOException;
import java.io.OutputStream;
import java.io.PrintStream;
public class SystemOut {
public static void main(String[] args) {
System.out.println("Hi");
final OutputStream newOs = new OutputStream() {
FileOutputStream fdOut = new FileOutputStream(FileDescriptor.out);
@Override
public void write(int b) throws IOException {
this.fdOut.write(b);
}
};
System.setOut(new PrintStream(newOs));
System.out.println("Hi, again");
}
}
我们的想法是用无缓冲的输出流替换现有的缓冲输出流。
答案 1 :(得分:2)
您不应该自己打印执行流程。有很多理由不这样做:
简而言之,您不会阅读成功日志,因为它们没用。对于失败的测试,您可以使用消息传递标准断言。
答案 2 :(得分:1)
您可以将println()
和flush()
换成另一种方法:
void out(String s) {
System.out.println(s);
System.out.flush();
}
无论如何,看看我编写测试的方式:只有 info 消息。 错误消息由失败的断言隐式写入。