2013-09-04 1 views
4

내가 내 셀레늄 테스트에 사용할 특정 system.properties과 테스트 작업을 실행하는 Gradle을 작업을 만들기 위해 고군분투 작동하지 않습니다특정 시스템 속성 작업을 실행, Gradle을 작업을 정의

task firefox() << { 
    System.setProperty('driver', 'firefox') 
    tasks.clean.execute() 
    tasks.test.execute() 
} 

명백하게. 나는 내 도움이 된 스크립트를 완성하는데 많은 도움을 주셔서 감사합니다!

답변

7

Task.execute()은 빌드 스크립트에서 절대로 호출하면 안됩니다 (잘못된 경우 발생할 수 있음). 이 방법을 호출하는 것은 Gradle의 몫입니다. test 작업에 대한 시스템 속성을 설정하는 방법은 다음과 같습니다 테스트는 항상 별도의 JVM에서 실행하기 때문에

test { 
    systemProperty "driver", "firefox" 
} 

System.setProperty()

는 영향을주지 않습니다.

+0

안녕하세요 Peter 님, 빠른 답변을 보내 주셔서 감사합니다. 내 질문에 부분적으로 대답합니다. 커맨드 라인 관점에서 sth에게 전화하고 싶습니다. like : "gradle firefox"또는 "gradle phantomjs". execute 함수를 호출하는 것이 좋지 않은 스타일이라면 다른 작업에 설정된 속성을 포함하여 테스트 작업을 호출하는 작업을 어떻게 설정할 수 있습니까? –

+0

유일한 해결책은 명령 줄 -Pvar = firefox를 통해 전달하는 변수이며 systemProperty "driver", var –

+0

속성을 설정하는 간단한 방법은 아닙니다. 대신, 두 개의 테스트 작업을 추가하거나 일부 시스템 (또는 프로젝트) 속성을 전달하고이를 기반으로 테스트 작업을 구성 할 수 있습니다. 이것이 충분하지 않다면,보다 복잡한 대안은 임베디드 빌드 ('GradleBuild' 작업)를 사용하거나'gradle.startParameter.taskNames'를 조작하는 것입니다. –

관련 문제