2017-02-27 1 views
2

JUnit 테스트를 실행하는 데 gradle을 사용하고 있습니다. 문제는 명령 줄에서 인수로 인수를 전달해야한다는 것입니다. 시스템 속성을 전달하려고했지만 실패했습니다. 더 arg1 인수가 없기 때문에그래 플 테스트로 테스트에 명령 줄 인수를 전달하는 방법은 무엇입니까?

public class MyTest { 
    @Test 
    public void someTest() throws Exception { 
     assertEquals(System.getProperty("arg1"), "something"); 
    } 
} 

그것은 실패

gradle test -Darg1=something 

여기 내 테스트입니다. 어떻게 든 명령 줄 인수를 전달할 수 있습니까?

답변

6

, 당신은 테스트가 실행되는 JVM을 테스트 JVM을하지 Gradle을하는 시스템 매개 변수 arg1를 전달합니다. 부작용으로부터 테스트를 보호하기 위해이 방법으로 설계되었습니다. 당신이 시험을 PARAM을 propagete해야하는 경우

test { 
    systemProperty 'arg1', System.getProperty('arg1') 
} 

처럼 떨어지게를 사용하고 같은 방법

+0

어디에 테스트 {systemProperty 'arg1', System.getProperty ('arg1')} 스크립트를 넣어야합니까? 이 오류 메시지가 나타납니다. "인수에 대한 메소드 테스트를 찾을 수 없습니다." – Apperside

+0

@Apperside this https://github.com/cuba-platform/cuba/blob/master/build.gradle#L391을 확인하십시오. – AdamSkywalker

2

사용 -D는 당신의 매개 변수를 보낼과 같이 :.

./gradlew test -Dgrails.env=dev -D<yourVarName>=<yourValue> 

는 -D의 gradle command line documentation를 참조하십시오.

테스트에서 액세스하려면 build.gradle 파일에 테스트를 적용해야합니다.

test { 
     systemProperty "propertyName", "propertyValue" 
    } 

또한과 같이 모든 시스템 등록 정보를 전달할 수 있습니다 : 당신이 gradle test -Darg1=smth 실행하면

test { 
     systemProperties(System.getProperties()) 
    } 
+0

를 실행 어떻게 내 대답은 다르다? – AdamSkywalker

+0

나는 OP 질문을 읽은 후 답을보기 위해 페이지를 새로 고치기 전에 편집을했습니다. – ninnemannk

관련 문제