gpt4 book ai didi

java - 从 Junit 运行时,System.out.print 不会输出到控制台

转载 作者:塔克拉玛干 更新时间:2023-11-03 03:19:26 25 4
gpt4 key购买 nike

运行时:

public static void main(String... args) throws InterruptedException {
while (true) {
System.out.print(".");
Thread.sleep(200);
}
}

对比从 junit 运行相同的代码时:

@Test
public void test() throws Exception {
while (true) {
System.out.print(".");
Thread.sleep(200);
}
}

有不同的行为:
对于 main() - 当进程运行时,输出按预期显示 ("."-> ".."-> "...")

但是,对于 JUnit,当运行同一段代码时,在进程运行时不会显示任何输出 - 它仅在退出测试时刷新。

为什么会这样?如果我需要在测试运行期间在控制台中显示状态,是否有任何解决方法?

我需要打印到同一行,所以不适合使用 println。

最佳答案

人们运行 JUnit 测试的方式有很多种(从 IDE 中,从 Maven 等构建系统中,或者从直接使用 JUnit 库的命令行)。看来您运行它的方式使用的是标准输出,该输出不会在每个输出上刷新。 (这可能是有意为之,因为通常使用持续集成系统批量运行测试,然后检查日志,因此不在每次写入时刷新可以提高性能。)

但是,如果您需要显式刷新缓冲区,请尝试使用 System.out.flush();在每次 .print 调用之后。

另一种选择,取决于您实际想要做什么,可能是使用比内置 System.out 流功能更全的日志记录系统。

关于java - 从 Junit 运行时,System.out.print 不会输出到控制台,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37372200/

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