2013-06-10 4 views
1

내 멀티 프로젝트 빌드에 testreports를 집계하고 싶습니다. 일부 테스트를 비활성화 한 프로젝트 구조가 있습니다. 이미 gradle sample code을 보았습니다. 기본 설정에서 정상적으로 작동하지만, 서브 프로젝트에서 테스트 작업을 사용 중지하면 작동이 중지됩니다. (. 그것은 있습니다 .. testresult 분명하지가/* 빈 파일을 찾습니다)

내 프로젝트 레이아웃은 다음과 같습니다gradle : 일부 테스트가 비활성화 된 multproject testReport 집계

ProjectA.gradle은 다음과 같습니다
root 
+--- ProjectA 
| \--- ProjectA.gradle 
+--- ProjectB 
| \--- ProjectB.gradle 
\--- build.gradle 

:

test { 
    enabled = false 
} 

rootprojects build.gradle에는 testReport 태스크가 있습니다.

ProjectA에서 작업이 실패하기 전에 말한 것처럼. 다음과 같이 샘플 코드를 수정하려고했습니다 :

task testReport(type: TestReport) { 
    destinationDir = file("$buildDir/reports/allTests") 
    reportOn subprojects*.test.findAll { test -> 
     test.getEnabled() 
    } 
} 

작업이 실행될 때 test.enabled가 true이기 때문에 여전히 작동하지 않습니다.

어떻게이 작업을 수행 할 수 있습니까?

답변

0

그것은 분명 거기 http://forums.gradle.org에서 버그 리포트 아마 가치가

입니다 testresult/*. bin 파일을 찾습니다.

작업이 실행될 때 test.enabled가 true이기 때문에 여전히 작동하지 않습니다. testReport 작업이 실행될 때

는 사실 그것은 false을하지만이 구성됩니다 때 true을합니다. (Gradle에는 고유 한 구성 및 실행 단계가 있습니다.) 기본적으로 상위 프로젝트 빌드 스크립트는 하위 프로젝트 빌드 스크립트보다 먼저 평가되기 때문입니다. 이 문제를 해결하는 한 가지 방법은 testReport 작업의 선언을 상위 빌드 스크립트의 맨 아래로 이동하고 바로 앞에 evaluationDependsOnChildren()을 추가하는 것입니다.

+0

고맙습니다! Gradle 포럼에서 이에 대한 주제를 만들었습니다. http://forums.gradle.org/gradle/topics/aggregating_multiproject_testreport_with_some_test_disabled – Csuki

관련 문제