2011-12-03 23 views
2

我在使用gradle運行junit測試時如何獲得顯示日誌輸出的良好信息時遇到了很多問題。爲了保持獨立於Logger的狀態,我在我的項目中使用Apache commons-logging。從測試中轉發公用日誌消息

現在我發現了這一點,但它並沒有真正說明什麼:Gradle java.util.logging.Logger output in unit tests

隨着http://gradle.org/logging我得到一個很好的瞭解如何從gradle這個任務日誌,而不是如何從我的測試顯示日誌消息。

gradle -i也不是我所期待的。雖然這給了我一些有關測試的信息,但它並沒有給我日誌輸出。

我很欣賞任何正確的方向提示。



編輯(在這裏做它,因爲它是一個相當長的回答彼得的答案):

添加

test { 
testLogging.showStandardStreams = true 
} 

工作,還挺。這是一個Gradle 1.0-milestone-6功能,所以我首先必須升級Gradle。 然後,找不到我在src/test/java文件夾中的log4j.properties。添加

sourceSets.test.runtimeClasspath += files(sourceSets.test.java.srcDirs) 

至build.gradle文件至少沉默了警告,但我沒有任何日誌輸出。我的log4j.xml不應該成爲問題,在IDE工作:

<!DOCTYPE log4j:configuration SYSTEM "log4j.dtd"> 

<log4j:configuration xmlns:log4j="http://jakarta.apache.org/log4j/"> 
<appender name="console" class="org.apache.log4j.ConsoleAppender"> 
    <param name="Target" value="System.out"/> 
    <layout class="org.apache.log4j.PatternLayout"> 
     <param name="ConversionPattern" value="%-5p %c{1} - %m%n"/> 
    </layout> 
</appender> 


<root> 
    <priority value="info"/> 
    <appender-ref ref="console"/> 
</root> 

</log4j:configuration> 

只是爲了完整起見,我用Google搜索showStandardStream,發現我應該已經找到開始與信息:http://gradle.org/current/docs/dsl/org.gradle.api.tasks.testing.Test.html

問題仍然開放,但是,因爲它似乎沒有工作:)

EDIT2:

現在gradle test -i打印日誌信息輸出。雖然它不是我正在尋找的東西(因爲它與Gradle日誌記錄混合在一起),但這已經足夠了。

回答

2

您可以將test.testLogging.showStandardStreams設置爲true,然後確保您的測試日誌記錄打印爲標準輸出。這將使日誌輸出顯示在命令行和測試報告中。

+0

感謝提示,彼得。看到我上面的答案(很長,所以我不得不把它放在那裏)。 – rweng