通过Gradle测试时记录

mis*_*tor 64 java logging scala gradle

在测试时,Gradle似乎将stdout/stderr重定向到project_dir/build/reports/tests/index.html.有没有办法避免这种重定向,并将内容打印到控制台?

附加信息:

  • 这是一个Scala 2.9.1项目.
  • 我正在使用slf4s进行日志记录.

rob*_*oby 78

apply plugin : 'java'

test {
    testLogging.showStandardStreams = true
}
Run Code Online (Sandbox Code Playgroud)

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

这需要当前的gradle版本.我假设Scala测试是在Java测试任务下运行的.


To *_*Kra 20

我也在使用(testLogging.exceptionFormat = 'full'):

test {
    testLogging.showStandardStreams = true
    testLogging.exceptionFormat = 'full'
}
Run Code Online (Sandbox Code Playgroud)

从stacktrace中可以看到更多内容

  • “exceptionFormat”设置对我有用,“showStandardStreams”没有效果! (3认同)

jos*_*ell 16

对于Android Gradle文件

如果你在android gradle文件中(如果你在build.gradle文件apply plugin: 'com.android.application'的顶部)

然后将其粘贴到build.gradle中

// Test Logging
tasks.withType(Test) {
    testLogging {
        events "standardOut", "started", "passed", "skipped", "failed"
    }
}
Run Code Online (Sandbox Code Playgroud)

对于常规Gradle文件

将其粘贴到build.gradle中

// Test Logging
test {
    testLogging {
        showStandardStreams = true
    }
}
Run Code Online (Sandbox Code Playgroud)


nmf*_*one 15

正如@roby回答:

将以下代码添加到您的 build.gradle

apply plugin : 'java'

test {
    testLogging.showStandardStreams = true
}
Run Code Online (Sandbox Code Playgroud)

重要!

您需要运行gradle test或使用添加的clean命令构建.

./gradlew clean test

or

./gradlew clean build
Run Code Online (Sandbox Code Playgroud)

希望有效.

  • 你能解释为什么需要"干净"吗? (3认同)
  • @MichaelKanis,因为你已经改变了gradle配置..据我所知,gradle配置是缓存的. (2认同)

Syl*_*are 14

如果您使用 Kotlin DSL,build.gradle.kts语法会有点不同。

确保您的依赖项中有 junit:

dependencies {
    testImplementation("org.junit.jupiter:junit-jupiter:5.4.2")
    testImplementation("org.junit.jupiter:junit-jupiter-api")
    testRuntimeOnly("org.junit.jupiter:junit-jupiter-engine")
}
Run Code Online (Sandbox Code Playgroud)

然后你需要添加到你的测试任务中:

import org.gradle.api.tasks.testing.logging.TestExceptionFormat

tasks.test {
    useJUnitPlatform()
    testLogging {
        showStandardStreams = true
        exceptionFormat = TestExceptionFormat.FULL
        events("skipped", "failed")
    }
}
Run Code Online (Sandbox Code Playgroud)

然后您可以根据需要调整设置。


Blu*_*ell 9

对于 Android Gradle:/sf/answers/2969807081/

对于 Android Gradle KTS(Kotlin):

// Test Logging
tasks.withType<Test> {
    testLogging {
        events("standardOut", "started", "passed", "skipped", "failed")
    }
}
Run Code Online (Sandbox Code Playgroud)


zho*_*uji 8

test {
    testLogging.showStandardStreams = true
}
Run Code Online (Sandbox Code Playgroud)

test {
    testLogging {
        showStandardStreams = true
    }
}
Run Code Online (Sandbox Code Playgroud)

也有效.


Joh*_*ney 6

只是补充一下,:

showStandardStreams = true
Run Code Online (Sandbox Code Playgroud)

是一个简写:

events = ["standard_out", "standard_error"]
Run Code Online (Sandbox Code Playgroud)

在将两个条目混合时,请务必记住以下内容:

test {
    testLogging {
        showStandardStreams = true
        events = ["passed", "failed", "skipped"]
    }
}
Run Code Online (Sandbox Code Playgroud)

将导致没有stdout而反向顺序:

test {
    testLogging {
        events = ["passed", "failed", "skipped"]
        showStandardStreams = true
    }
}
Run Code Online (Sandbox Code Playgroud)

将stdout条目添加到列表中,因此stdout将起作用.

有关详细信息,请参阅.