Gradle을 통해 테스트하는 동안 로깅


78

테스트하는 동안 Gradle은 stdout / stderr을 project_dir/build/reports/tests/index.html. 이 리디렉션을 피하고 대신 콘솔에 인쇄되는 방법이 있습니까?

추가 정보:

  • Scala 2.9.1 프로젝트입니다.
  • 로깅을 위해 slf4s 를 사용 하고 있습니다.

답변:


97
apply plugin : 'java'

test {
    testLogging.showStandardStreams = true
}

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

현재 Gradle 버전이 필요합니다. Scala 테스트가 Java 테스트 작업에서 실행된다고 가정합니다.


테스트 결과는 그렇지 않은 것 같습니다. 이것은 출력을 생성합니다. pastebin.com/PX8e1EKv 편집 : 이벤트가 줄 바꿈을 캡처한다고 생각하는대로 println을 인쇄물로 수정합니다
roby

감사. 나도해볼 게. 소스 파일에도 로그 문이 있습니다. 콘솔에 인쇄하려면 어떻게해야합니까?
missingfaktor 2012

로깅 구현에 따라 다릅니다. slf4s는 기본적으로 NOP 로거를 사용하고 로그 문을 버릴 수 있습니다. 테스트 클래스 경로에 로거 구현 jar가 있습니까? slf4j-simple-1.6.4.jar이 있으면 INFO 이상을 STDERR에 기록합니다. 충분하지 않은 경우 logback jar를 추가하고 logback-test.xml을 설정하여 콘솔에 로그를 추가합니다.
roby 2012

Spring / JUnit에서 나를 위해 일함
Dmitry

테스트 작업이 최신 상태로 간주되고 실행되지 않아 출력이 표시되지 않기 때문에 "작동하지 않습니다". 블록 ( ) 내에서 수행 $ gradle clean test하거나 사용할 수 있습니다 . 자세한 내용은 문서 를 참조하십시오 . outputs.upToDateWhen {false}testLoggingtest { testLogging { outputs...
Johnny Baloney

27

( testLogging.exceptionFormat = 'full') 도 사용하고 있습니다 .

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

stacktrace에서 더 많은 것을 보는 것이 좋습니다.


1
exceptionFormat나를 위해 일한 설정은 showStandardStreams영향을 미치지 아니합니다!
Shakeel

18

@roby 가 대답 했듯이 :

다음 코드를 귀하의 build.gradle

apply plugin : 'java'

test {
    testLogging.showStandardStreams = true
}

중대한!

추가 된 clean명령으로 gradle 테스트를 실행하거나 빌드해야합니다 .

./gradlew clean test

or

./gradlew clean build

작동하기를 바랍니다.


3
"깨끗함"이 필요한 이유를 설명해 주시겠습니까?
마이클 카 니스

2
@MichaelKanis 내가 아는 한 gradle 구성을 변경했기 때문에 gradle 구성이 캐시됩니다.
nmfzone

1
@nmfzone은 캐시를 업데이트하려면 클린 테스트를 한 번 실행해야 함을 의미합니다. 하지만 내 시나리오에서는 콘솔에 테스트 결과를 표시하기 위해 매번 clean 명령을 실행해야합니다. 다음 실행에서 gradle 구성이 변경되지 않더라도.
Weishi Zeng

@WeishiZeng 입력이 변경되지 않았기 때문에 테스트가 실행되지 않는 것이 확실합니까? 자바 소스 파일 이외의 테스트 입력이있는 경우이를 Task.inputs로 등록해야 Gradle이 테스트를 다시 실행해야할지 여부를 알 수 있습니다.
Ajax

18

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"
    }
}

일반 Gradle 파일의 경우

이것을 build.gradle에 붙여 넣으십시오.

// Test Logging
test {
    testLogging {
        showStandardStreams = true
    }
}

10
test {
    testLogging.showStandardStreams = true
}

test {
    testLogging {
        showStandardStreams = true
    }
}

또한 작동합니다.


9

추가하려면 다음을 수행하십시오.

showStandardStreams = true

다음의 약어 입니다.

events = ["standard_out", "standard_error"]

다음과 같이 두 항목을 혼합 할 때이를 염두에 두는 것이 중요합니다.

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

반대 순서는 stdout 이 발생 하지 않습니다 .

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

stdout 항목을 목록에 추가하므로 stdout이 작동 합니다.

자세한 내용 은 소스 를 참조하십시오.


showStandardStreams순서에서 두 번째가 되면 다시 확인하기 위해 표준 스트림이 이벤트 목록에 추가 됩니까? 그런 것 같지만 두 번 확인하십시오.
George Pantazes

2

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")
}

그런 다음 테스트 작업에 추가해야합니다.

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

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

그런 다음 필요에 따라 설정을 조정할 수 있습니다.


1
./gradlew --info clean build test

--stacktrace옵션으로 실행 하여 스택 추적을 가져옵니다. 더 많은 로그 출력을 얻으려면 --info또는 --debug옵션을 사용하여 실행하십시오 . --scan완전한 통찰력을 얻으려면 함께 실행하십시오 .


0

제 경우에는 Java 및 Spring-boot-starter-test로 작업했습니다.

나는 같은 문제가 있었고 문제는 테스트 엔진이 없다는 것입니다.

그래서 build.gradle의 종속성에 하나를 추가하면 작동합니다.

testCompile 그룹 : 'org.junit.jupiter', 이름 : 'junit-jupiter-api', 버전 : dependencyVersion.junit5 testCompile 그룹 : 'org.junit.jupiter', 이름 : 'junit-jupiter-engine', 버전 : dependencyVersion .junit5

당사 사이트를 사용함과 동시에 당사의 쿠키 정책개인정보 보호정책을 읽고 이해하였음을 인정하는 것으로 간주합니다.
Licensed under cc by-sa 3.0 with attribution required.