2012-02-20 155 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