gpt4 book ai didi

unit-testing - 您将如何实现,以便每个测试类将输出记录到一个单独的文件中?

转载 作者:行者123 更新时间:2023-11-28 20:55:27 25 4
gpt4 key购买 nike

使用 Java 和 TestNG 或 JUnit,如果您想将测试期间收集的一些信息记录到文件中,并让每个测试类(例如 TestClass1.class)保持单独的输出像这样以类命名的文件:

TestClass1.log

你会如何实现这种事情?我知道 log4j 可以在单个文件的“每行”输出中记录类名,但我希望每个类的输出都在单独的文件中。此外,log4j 可以根据包名将输出记录到不同的文件中。这些解决方案都不是我想要的,因为我想要数百个测试来创建数百个日志文件

最佳答案

使用 Log4J 1.x,您必须在每个类中手动实例化 Logger,使用套件名称和类名称的组合(假设每个套件都有一个唯一的名称)为每个测试提供一个唯一的文件名。

例如在测试类的setUp()方法中,定义日志文件的名称:

String logFilename = context.getSuite().getName() + "_" + this.getClass().getSimpleName();

然后在测试使用的每个类中,手动实例化记录器并提供您要使用的日志文件的名称:

public class SomeClass {
private Logger log = null;

public SomeClass(String logFilename) {
log = Logger.getLogger(logFilename);
}

但是这个解决方案不是很优雅,它需要将文件名传递给测试中使用的所有类。

更好的解决方案:

如果您可以升级到 Log4J 2,它支持使用 ThreadContext 写入单独的日志文件: http://logging.apache.org/log4j/2.x/faq.html#separate_log_files

我还发现这篇博文建议使用 LOGBack 及其映射诊断上下文:http://www.nullin.com/2010/07/28/logging-tests-to-separate-files/

关于unit-testing - 您将如何实现,以便每个测试类将输出记录到一个单独的文件中?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25148492/

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