使用Java,无论是用TestNG的JUnit的还是,如果你想记录一个测试到一个文件中收集一些信息,让每个测试类(如TestClass1.class)保持像这样的类命名的单独的输出文件:
TestClass1.log
你将如何实现这样的事情? 我知道的log4j可以输出的“每行”在一个单一的文件中记录类的名字,但我想每个类输出,在单独的文件。 此外,log4j的可输出记录到基于包的名字不同的文件。 无论这些解决方案是什么,我期待的,因为我想上百次试验,以创造数百个日志文件 。
使用Java,无论是用TestNG的JUnit的还是,如果你想记录一个测试到一个文件中收集一些信息,让每个测试类(如TestClass1.class)保持像这样的类命名的单独的输出文件:
TestClass1.log
你将如何实现这样的事情? 我知道的log4j可以输出的“每行”在一个单一的文件中记录类的名字,但我想每个类输出,在单独的文件。 此外,log4j的可输出记录到基于包的名字不同的文件。 无论这些解决方案是什么,我期待的,因为我想上百次试验,以创造数百个日志文件 。
使用Log4J的1.x中,你将不得不手动实例记录器中的每个类,使用套件名称和类名(假设每套房都有唯一的名称)的组合为每个测试提供了一个唯一的文件名。
例如,在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/