gpt4 book ai didi

Java - 测试时隐藏系统输出

转载 作者:行者123 更新时间:2023-11-30 08:43:38 25 4
gpt4 key购买 nike

我不确定是否可行,但如果可行,我该怎么做?我有一个项目,其中包含另外 2 个项目作为依赖项。父项目仅用于测试目的(客户端服务器应用程序)。当我进行测试时,由于客户端和服务器项目的输出量很大,我很难通读我的测试输出。我试图找到一种方法从控制台隐藏我的子项目的所有输出(printf()),以便我只能看到我的测试输出。有办法吗?

我使用 JUnit 进行测试。

谢谢

最佳答案

您应该使用 Java Logger API(或 Log4J)而不是直接使用 System.out.print,这样您就可以在执行测试期间禁用特定的记录器。

如果您无法更改遗留代码以使用 Logger API,则有两种选择:

选项 1:

像这样的伪代码创建一个 PrintStream 装饰器类:

public class FilteredPrintStream extends PrintStream {

private final PrintStream stream;

...

@Override
public void print(String str) {
if (notCalledBySubproject()) {
stream.print(str);
}
}

// override other methods too
}

然后设置默认输出:System.setOut(new FilteredPrintStream(System.out));

要查找方法调用者(创建 notCalledBySubproject 方法),请参阅 How do I find the caller of a method using stacktrace or reflection?

选项 2:

在您的测试代码中使用 Logger API,因此您可以将输出重定向到一个文件,例如,然后您忽略控制台输出并查看测试生成的文件。

关于Java - 测试时隐藏系统输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34142161/

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