我有一个使用log4j作为记录器的Java项目。要求是在日志文件中打印测试用例名称。
一个类中有多个测试,并且该项目也支持并行执行。为每个测试创建一个记录器实例。
我使用system.Setproprty将当前的记录器实例与测试用例名称相关联。以下是我的log4j.properties文件:-
log4j.appender.logFileAppender.layout.ConversionPattern=%d{yyyy/MM/dd HH:mm:ss} [%t] ${testCaseName} %5p (%F:%L) - %m%n
log4j.appender.logFileAppender.Append=false
log4j.appender.logFileAppender.file=./log/UITest.log
在创建记录器文件的新实例时,将运行时变量$ {testCaseName}设置如下:-
public Logger log;
public synchronized Logger initializeLogger(String testName)
{
log = LoggerFactory.getLogger(testName);
System.setProperty("testCaseName", testName);
PropertyConfigurator.configure(log4jPropertiesFilePath);
return log;
}
上面的骗子实例创建方法在@BeforeMethod中调用。
当前记录器文件正在打印类中最后一个测试的测试名称(在非并行ans并行执行模式下)
请帮助我找出问题所在,因为多个测试用例的测试用例名称未打印在日志文件中。
答案 0 :(得分:0)
尝试将其添加到您的测试中
@Rule
public TestName testName = new TestName();
@Before
public void printTestName() {
System.out.println("Running ==> " + testName.getMethodName());
}