2014-04-25 3 views
6

xcodebuild를 사용하여 xctests을 실행 중이고 일부를 environment variables으로 전달해야합니다. 아래 예에서는 ACCOUNT_IDHOST_URL입니다.xcodebuild 명령 줄에서 전달 된 사용자 정의 변수 액세스

내가 모두 환경 변수로 변수 전달 및 사용 getenv ("ACCOUNT_ID") xcodebuild -project CalculatorTestClient.xcodeproj -scheme CalculatorTestClient -destination '%s' ACCOUNT_ID=%s HOST_URL=%s test"

를 사용 user defaults로를 전달하고 액세스하는 시험에서 그들을 접근 시도 어느 접근 방식은 나를 위해 일한 [[NSUserDefaults standardUserDefaults] valueForKey:@"HOST_URL"]; xcodebuild -project CalculatorTestClient.xcodeproj -scheme CalculatorTestClient -destination '%s' ACCOUNT_ID=%s HOST_URL=%s test"

. 커맨드 라인에서 사용자 정의 변수를 전달하는 가장 쉬운 방법은 무엇입니까?

+0

쉽지 않을 것 같습니다. http://blog.manbolo.com/2013/05/17/passing-user-variable-to-xcodebuild – Opal

답변

0

지금까지 나는 단지 일을이 방법을 얻을 수있었습니다 :

$ ACCOUNT_ID=foo HOST_URL=bar xcodebuild -project CalculatorTestClient.xcodeproj -scheme CalculatorTestClient clean test 

을하고 그들을 통해 액세스 :

NSDictionary *environment = [[NSProcessInfo processInfo] environment]; 
NSString *accountID = [environment objectForKey:@"ACCOUNT_ID"]; 
NSString *hostUrl = [environment objectForKey:@"HOST_URL"]; 
+0

iOS가 아닌 OS X를 타겟팅하는 경우에만이 기능이 작동한다는 것을 알게되었습니다. –

+0

내가 나를 위해 일하는가, iOS UITests –

+0

예, 내 의견은 OS X가 아닌 iOS를 타겟팅 할 때만 효과가 있다고합니다. –

10

@ 폴 젊은 유사 나는이를 얻을 수 있었다 Scheme을 몇 가지 수정하여 작업합니다. 여기 내 솔루션입니다 :

엑스 코드에서 구성표 (엑스 코드> 당신의 계획> 편집 계획> 테스트> 인수 탭> 환경 변수) : 코드 (스위프트 3)에서

Name Value ACCOUNT_ID $(ACCOUNT_ID) HOST_URL $(HOST_URL)

:

명령 줄에서
let accountID = ProcessInfo.processInfo.environment["ACCOUNT_ID"]! 
let hostURL = ProcessInfo.processInfo.environment["HOST_URL"]! 

:

$ xcodebuild -project YourProject.xcodeproj \ 
-scheme "Your Scheme" \ 
-sdk iphonesimulator \ 
-destination 'platform=iOS Simulator,name=iPhone 7,OS=10.2' \ 
-derivedDataPath './output' \ 
ACCOUNT_ID='An Account ID' \ 
HOST_URL='www.hosturl.com' \ 
test 
+0

OSX에만 해당됩니까? iOS 용 작동 솔루션에 감사드립니다. – cakl

+0

내 솔루션은 iOS 용입니다. 이것은 iOS UI 테스트에 변수를 전달하는 방법입니다. – atgrubb

+0

지금 당장 당신을 사랑합니다. 이것을 찾는데 어느 정도 시간이 걸렸습니다. 감사! 정확히 내가 필요로하는 것. – helkarli

0

내가 제 경우에는 xcodebuild build-for-testing 명령을 사용하고 xctestrun 파일을 작성한 다음 xcodebuild test-without-building을 사용하여 테스트를 실행했습니다. 이 경우 테스트를 실행하기 전에 plist에 환경 변수가있는 xctestrun 파일을 변경할 수 있습니다.

그래서 PlistBuddy을 사용하여 스크립트를 실행하여 plist 환경 키를 변경해야합니다. 예를 들어 키를 추가하려면 :

/usr/libexec/PlistBuddy -c "add :APPNAME-TARGETNAME:EnvironmentVariables:KEYNAME string 'VALUE'" "(Path to XCTestRun file)" 
관련 문제