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.