配置单元测试,以便不需要进行log4j配置

时间:2018-07-15 15:39:25

标签: unit-testing spring-boot log4j2

我想使用外部log4j2配置构建spring-boot应用程序。我创建了一个项目,其中log4j config与spring-boot应用程序jar文件捆绑在一起,但它存储在jar文件外部。应用程序加载在application.properties中定义的配置文件,例如。 logging.config = file:config / log4j2.xml。应用程序结构如下:

app.jar 
config:
    ->application.properties
    ->log4j2.xml

应用程序正确启动,并且可以看到两个配置文件。但是测试无法找到application.properties中定义的log4j2.xml。

我已经创建了test.properties文件,如下所示:

logging.level.com.mypackage=TRACE

# This sets the global logging level and specifies the appenders
log4j.rootLogger=TRACE, theConsoleAppender

# settings for the console appender
log4j.appender.theConsoleAppender=org.apache.log4j.ConsoleAppender
log4j.appender.theConsoleAppender.layout=org.apache.log4j.PatternLayout
log4j.appender.theConsoleAppender.layout.ConversionPattern=%d %p %c{10} [%t] %m%n

并用以下注释为我的测试课:

@TestPropertySource(locations="classpath:test.properties")

但是测试运行程序仍在寻找logging.config中定义的文件。

我应该在application.properties文件中覆盖哪些属性,以便在单元测试期间不需要log4j2.xml?

感谢您的帮助。

1 个答案:

答案 0 :(得分:0)

我想出的最好的想法是,重写属性logging.config指向类路径中包含的log4j配置,并添加log4j配置作为测试资源。

在我的test.properties中

<script src="https://ajax.googleapis.com/ajax/libs/jquery/2.1.1/jquery.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/echarts/4.1.0/echarts-en.min.js"></script>
<div id="mychart"></div>