Gradle: Как получить выход из теста STDERR/STDOUT в консоль?

(Gradle 3.2.1) Я запускаю некоторые java-тесты, которые регистрируют вывод в Stderr/Stdout. Я могу видеть этот вывод, если я запустил

gradle test --info

но в этом случае большая часть нежелательного вывода из 3-х партийных библиотек тоже есть.

Документация предлагает использовать logging.caputureStandardError / logging.caputureStandardError (loglevel), но, похоже, это не имеет никакого эффекта.

tasks.withType(Test) {
   logging.captureStandardOutput LogLevel.QUIET
   logging.captureStandardError LogLevel.QUIET
}

Затем, если выполняется gradle test, в консоли не выводится STDERR/STDOUT.

Как я могу получить только результат из классов тестов в консоли?

Ответ 1

Добавьте эти строки в build.gradle:

apply plugin: 'java'

test {
    dependsOn cleanTest
    testLogging.showStandardStreams = true
}

Обратите внимание: dependsOn cleanTest не требуется, но , если он не используется, вам нужно запустить задачу cleanTest или clean перед задачей test.


Изменить:

Лучший подход:

apply plugin: 'java'

test {
    testLogging {
        outputs.upToDateWhen {false}
        showStandardStreams = true
    }
}

Обратите внимание: outputs.upToDateWhen {false} не является необходимым, но , если он не используется, вам нужно запустить задачу cleanTest или clean перед задачей test.

Для получения дополнительной информации и параметров см. документацию.

Ответ 2

Для тех, кто использует Kotlin/Kotlin DSL для Gradle, вам необходимо добавить в файл build.gradle.kts следующее:

tasks.withType<Test> {
    this.testLogging {
        this.showStandardStreams = true
    }
}

Также, как упоминалось в другом ответе, вам нужно будет запустить gradle clean test, чтобы вывод выводился каждый раз.