2014-07-27 5 views
1

첫 번째로, 내 목표는 내 개발 서버를 시작하는 포트 Gradle (관심이 있다면 this plugin)에 대한 내 기능 테스트에 알리는 것입니다. 가장 간단한 방법은 시스템 속성을 설정하는 것입니다. 그래서 여기에 내가 할 노력하고있어 무엇을 :Gradle 테스트 작업에서 다른 클로저의 속성에 액세스하려고 시도합니다.

appengine { 
    httpPort = 8081 
    ... 
} 

test { 
    systemProperty "httpPort", appengine.httpPort 
} 

나는 여전히 Gradle을 꽤 새로운 해요 및 아마 충분히 내 그루비 범위 지정 규칙을 잘 모르겠지만, 이런 일을하는 것이 가능해야한다, 권리? 나는 이런 종류의 일을하기 위해 "global def"을 사용하는 것을 보았지만,이 특별한 경우를위한보다 우아한 해결책이있는 것처럼 보입니다.

+2

네, 그래야 정상입니다. 진짜 질문이 뭐니? –

+1

태스크 또는 확장 등록 정보에 액세스하여 해당 값을 검색하는 것이 좋습니다. 참고 사항 :이 특별한 경우 플러그인은 기능 테스트를위한'SourceSet'을 이미 정의하고 있습니다. 소스를이'SourceSet'의 구성된 소스 디렉토리에 넣고 표준 단위 테스트 소스 디렉토리를 사용하는 대신'appengineFunctionalTest' 태스크를 사용해야합니다. –

+0

허, 내 예제 사용법이 정확해야합니까? 'test' 클로저 안에서'appengine'을 해석하는 방법을 알지 못한다는 오류가 발생했습니다. 어쩌면 이전에 오타가 있었을 것입니다. 나는 그것을 또 한번 시도 할 것이다. 그리고 네,'appengineFunctionalTest' 태스크와 함께'functionalTest' 디렉토리를 사용하고 있습니다. 둘 다 고마워! –

답변

0

아하, 여기 트릭입니다. 특히 시스템 속성을 기능 테스트에 전달하고 싶습니다. 웬일인지 test 클로저가 그 자리에 적합하고 그 자리에서 appengineFunctionalTest 작업을 상속 받겠지 만 그럴 수는 없습니다. 일단 test 클로저를 appengineFunctionalTest으로 변경하면 Gradle은 점들을 연결할 수있었습니다. 나는 아직도 스코프 규칙에 의해 조금 신비 스럽지만 나는 배울 것이라고 확신한다. :)

appengine { 
    httpPort = 8081 
    ... 
} 

appengineFunctionalTest { 
    systemProperty "httpPort", httpPort 
} 

그래서 불행하게도, 그것은 & A는 질문에 언급 된 앱 엔진 Gradle을 플러그인에 대해 특별히 지금이 Q 같습니다. 댓글 작성자 덕분에 도와 줬습니다!

관련 문제