使用maven
运行测试时,我希望在屏幕上看到输出。
将log4j.xml
放入项目的目录(src / test / resources / cfg /)之后,我更新了我的pom
以包含
235 <plugin>
236 <groupId>org.apache.maven.plugins</groupId>
237 <artifactId>maven-surefire-plugin</artifactId>
238 <configuration>
239 <skipTests>false</skipTests>
240 <excludes>
241 <exclude>**/*$*.java</exclude>
242 </excludes>
243 <systemProperties>
244 <property>
245 <name>-Dlog4j.configuration</name>
246 <value>file:src/test/resources/cfg/log4j.xml</value>
247 </property>
248 </systemProperties>
249 <additionalClasspathElements>
250 <additionalClasspathElement>src/test/resources/cfg/</additionalClasspathElement>
251 </additionalClasspathElements>
252 </configuration>
253 </plugin>
以上不起作用。测试运行时,我仍然会看到以下消息
log4j:WARN Please initialize the log4j system properly.
对于记录,以下是log4j
1 <?xml version="1.0" encoding="UTF-8" ?>
2 <!DOCTYPE log4j:configuration SYSTEM "log4j.dtd">
3
4 <log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/">
5 <appender name="console" class="org.apache.log4j.ConsoleAppender">
6 <param name="Target" value="System.out"/>
7 <layout class="org.apache.log4j.PatternLayout">
8 <param name="ConversionPattern" value="%-5p %c{1} - %m%n"/>
9 </layout>
10 </appender>
11
12 <root>
13 <priority value ="debug" />
14 <appender-ref ref="console" />
15 </root>
16
17 </log4j:configuration>
我缺少什么?
答案 0 :(得分:7)
我有几点意见。首先,我建议您将任何与测试相关的log4j,logback配置文件直接放在src / test / resources中。这样它们总是被添加到类路径中,它只是起作用。
但是,如果您需要将文件放在src / test / resources / cfg中并想使用classpatlelements,那么请注意documentation
的建议但是,如果必须,可以使用additionalClasspathElements元素将自定义资源/ jar添加到类路径中。这将被视为绝对文件系统路径,因此您可能需要使用$ {basedir}或其他属性与相对路径相结合。
所以试试:
<additionalClasspathElement>${basedir}/src/test/resources/cfg/</additionalClasspathElement>
答案 1 :(得分:-4)
log4j:WARN Please initialize the log4j system properly.
如果您不需要使用log4j,则无需关心此消息。
但是,如果您需要log4j,请在<dependency>
下添加以下<dependencies>
标记
<dependency>
<groupId>log4j</groupId>
<artifactId>log4j</artifactId>
<version>1.2.16</version>
</dependency>