2012-11-15 78 views
4

當使用maven運行測試時,我想在屏幕上看到輸出。如何在pom.xml中設置類路徑?

log4j.xml到我的項目的目錄中(src /測試/資源/ 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

可能重複[如何顯示在萬無一失的測試resports log4j的輸出(http://stackoverflow.com/questions/4379996/how-to-show-log4j- output-in-surefire-test-resports) – eis

+0

您需要一個真實的文件名,而不是'file:src/test/resources/cfg/log4j.xml' URL。 –

回答

6

我有一對夫婦的意見。首先,我建議您將任何與測試相關的log4j,logback配置文件直接放在src/test/resources中。這樣它們總是被添加到類路徑中,並且它正常工作。

但是,如果你需要把這些文件放在src /測試/資源/ cfg中,想要使用classpathelements,然後聽從的documentation

的建議,但是,如果你要,你可以使用additionalClasspathElements元素將自定義資源/ jar添加到您的類路徑中。這將被視爲絕對文件系統路徑,因此您可能希望使用$ {basedir}或另一個與相對路徑結合的屬性。

所以嘗試:

<additionalClasspathElement>${basedir}/src/test/resources/cfg/</additionalClasspathElement> 
-3

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>