我有一个应用程序,可以从UI运行单元测试。我使用JUnit API(不是来自Maven)运行测试。我也用黄瓜。当用户在我的应用程序黄瓜中运行测试时,创建新的应用程序上下文(用于测试)。此外,在业务逻辑实现方面,我应该将来自测试的日志写入单独的文件中,并在测试完成后将其发送到UI。因此,我的应用每次运行测试都应创建新的日志文件,完成后将其发送并删除。此外,我对我的应用程序使用SLF4J-Log4j2绑定。当我尝试为所有应用程序使用SLF4J-Log4j2绑定编写日志时,我最终无法删除日志文件,因为它们由记录器使用。我可以只为测试阶段创建其他记录器,还是可以配置现有的记录器以在测试完成后发布日志文件? 附言我试图在删除文件之前先删除当前的附加程序,但它不起作用
<?xml version="1.0" encoding="UTF-8"?>
<Configuration status="DEBUG">
<Properties>
<Property name="filename">${sys:catalina.home}/odysseyLogs</Property>
</Properties>
<Appenders>
<Console name="Console" target="SYSTEM_OUT">
<PatternLayout
pattern="%d{HH:mm:ss} %-5level %logger{1} - %msg%n" />
</Console>
<File name="File-other" fileName="${filename}/other.txt"
append="false">
<PatternLayout
pattern="%d{yyy-MM-dd HH:mm:ss} [%t] %-5level %logger{5} - %msg%n" />
<NoMarkerFilter onMatch="ACCEPT" onMismatch="DENY" />
</File>
<File name="File-env14" fileName="${filename}/bin/target/env14.txt"
append="false">
<PatternLayout
pattern="%d{yyy-MM-dd HH:mm:ss} | %-5level | %c{1.} - %msg%n" />
<MarkerFilter marker="env_14" onMatch="ACCEPT" onMismatch="DENY"/>
</File>
</Appenders>
<Loggers>
<Root level="debug">
<AppenderRef ref="Console" />
<AppenderRef ref="File-other" level="debug" />
<AppenderRef ref="File-env14" level="info" />
</Root>
</Loggers>
</Configuration>
答案 0 :(得分:0)
对于您的用例,我建议创建一个滚动文件附加程序,该附加程序配置有一个文件模式,其中包含正在运行的测试的系统属性。然后,我将在测试开始时设置测试的名称,并在测试结束时手动触发过渡。