2012-02-20 152 views
46

測試時,Gradle似乎將stdout/stderr重定向到project_dir/build/reports/tests/index.html。有沒有辦法避免這種重定向,並將事情打印到控制檯?通過Gradle測試時記錄日誌

其他信息:

  • 這是一個斯卡拉2.9.1項目。
  • 我正在使用slf4s進行日誌記錄。

回答

63
apply plugin : 'java' 

test { 
    testLogging.showStandardStreams = true 
} 

http://gradle.org/docs/current/dsl/org.gradle.api.tasks.testing.Test.html

這需要一個當前版本的Gradle。我假設Scala測試是在Java測試任務下運行的。

+6

剛剛測試過。不起作用。在測試它看起來像它不 – missingfaktor 2012-02-20 08:02:22

+0

哎呦,這將產生輸出我雖然: http://pastebin.com/PX8e1EKv 編輯:修改的println來打印,因爲我認爲事件捕獲換行符 – roby 2012-02-20 09:13:18

+0

感謝。我也會嘗試。我在源文件中也有一些日誌語句。我如何讓他們打印到控制檯? – missingfaktor 2012-02-20 09:42:46

10

我用的也是(testLogging.exceptionFormat = 'full'):

test { 
    testLogging.showStandardStreams = true 
    testLogging.exceptionFormat = 'full' 
} 

,這是很好看的堆棧跟蹤多個

+0

'exceptionFormat'設置對我有效,'showStandardStreams'沒有效果! – Shakeel 2017-10-18 23:12:35

9

由於@roby回答:

添加以下代碼到你的build.gradle

apply plugin : 'java' 

test { 
    testLogging.showStandardStreams = true 
} 

重要!

您需要運行gradle測試或使用添加的clean命令進行編譯。

./gradlew clean test 

or 

./gradlew clean build 

希望工程。

+1

你能解釋爲什麼需要「乾淨」嗎? – 2017-07-04 07:52:41

+1

@MichaelKanis,因爲你已經改變了gradle配置。就我所知,gradle配置被緩存了。 – nmfzone 2017-07-04 20:21:34

+0

@nmfzone這意味着您需要運行一次乾淨的測試來更新緩存。但在我的情況下,我需要每次運行乾淨的命令來顯示控制檯上的測試結果。即使在下面的運行中沒有對gradle配置進行更改。 – 2017-07-30 04:22:58

7

這工作我:

test { 
    testLogging { 
     showStandardStreams = true 
    } 
} 
5

對於Android的搖籃文件

如果您是Android gradle這個文件中(如果apply plugin: 'com.android.application'是在您的build.gradle文件的頂部)

然後將其粘貼到構建中。gradle這個

// Test Logging 
tasks.withType(Test) { 
    testLogging { 
     events "standardOut", "started", "passed", "skipped", "failed" 
    } 
} 
0

我想補充的:

showStandardStreams = true 

shorthand爲:

events = ["standard_out", "standard_error"] 

是非常重要的兩個條目混合爲以下時,記住這一點:

test { 
    testLogging { 
     showStandardStreams = true 
     events = ["passed", "failed", "skipped"] 
    } 
} 

wil損益結果在沒有標準輸出,而相反的順序:

test { 
    testLogging { 
     events = ["passed", "failed", "skipped"] 
     showStandardStreams = true 
    } 
} 

將在標準輸出條目添加到列表中,這樣標準輸出將工作

有關詳細信息,請參閱the source