2012-09-28 2 views
2

자바 프로젝트를 빌드하는 예쁜 표준 Gradle 빌드가 있습니다.왜 Gradle 테스트가 반복적으로 실행됩니까?

처음 실행하면 모든 것을 컴파일하고 테스트를 실행합니다. 파일을 변경하지 않고 두 번째 실행하면 테스트가 다시 실행됩니다.

this thread에 따르면, Gradle은 아무런 변화가 없다면 달리기 테스트로 게으르다 고 생각합니다. 여기에 기본 동작이 변경 되었습니까?

편집 : 나는 반복적으로 gradle test을 실행하면

, 테스트는 처음에만 실행하고 연속적으로 건너 뜁니다. 그러나 gradle build을 반복적으로 실행하면 다른 모든 작업이 최신 상태로 표시 되더라도 테스트는 매번 다시 실행됩니다.

답변

2

OK, 그래서 나는 르네에 응답 덕분에 '-i'출력을보고 나에게 메시지를 ...

실제로이 테스트 작업을 가지고 다음 '테스트 하나는 자바 플러그인에서, 그리고 내 자신의 'integrationTest'하나. 내가 그것이 적절하다고 생각하지 않았기 때문에 나는이 질문에 언급하지 않았다.

이러한 작업은 출력 (보고서 등)을 동일한 디렉토리에 작성하므로 Gradle의 작업 기반 입력 및 출력 추적은 무언가가 변경된 것으로 생각하고 테스트를 다시 실행합니다.

다음 질문 (별도로 묻습니다)은 다음과 같이됩니다. 최소한의 Groovy/Gradle 코드로 테스트 작업의 두 인스턴스를 완전히 분리하려면 어떻게해야합니까?

2

gradle uptodate 검사는 정보 수준에서 작업이 최신 상태로 간주되지 않는 이유를 기록합니다. "gradle build -i"를 다시 실행하여 로깅 출력을 확인하면서 정보 로깅을 실행하십시오.

환호, 르네

0

build.gradle에서 테스트 작업을 만든 다음 특정 작업을 호출하여 특정 테스트 집합을 실행해야합니다.

tasks.withType(Test) { 
    jvmArgs '-Xms128m', '-Xmx1024m', '-XX:MaxPermSize=128m' 
    maxParallelForks = 4 // this runs tests parallel if more than one class 
    testLogging { 
     exceptionFormat "full" 
     events "started", "passed", "skipped", "failed", "standardOut", "standardError" 
     displayGranularity = 0 
    } 
} 
task runAllTests(type: Test) { 
    include '**/AllTests.class' 
    testReportDir = file("${reporting.baseDir}/AllTests") 
    testResultsDir = file("${buildDir}/test-results/AllTests") 
} 
task runSkipSuite(type: Test) { 
    include '**/Test*.class' 
    testReportDir = file("${reporting.baseDir}/Tests") 
    testResultsDir = file("${buildDir}/test-results/Tests") 
} 

또한, 빌드 질문에 관련된 : 여기가 (재 실행 독립적으로 하위 클래스를 다음과 같은 제품군을 실행할 때 같이) 두 번 실행되지 않도록 클래스를 걸러 예입니다. "빌드"작업에는 빌드 디렉토리에서 테스트를 정리하는 깨끗한 단계가 포함됩니다. 그렇지 않으면 실행은 테스트가 이미 실행되었다고 생각합니다.

관련 문제