У меня есть проект Java, который использует log4j в качестве регистратора. Требуется, чтобы имя тестового набора было напечатано в файле журнала.
В одном классе несколько тестов. Проект также поддерживает параллельное выполнение. Экземпляр регистратора создается для каждого теста.
Я использовал 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.
В настоящее время файл регистратора печатает имя теста последнего теста в классе (в непараллельном и параллельном режиме выполнения)
Пожалуйста, помогите мне выявить проблему, из-за которой у нескольких тестовых примеров не было напечатано имя тестового набора в файле журнала.