2011-09-06 2 views
0

Android 기기에 연결하여 APK를 배포하는 monkeyrunner 스크립트가 있습니다.TeamCity를 사용하여 전화를 걸었을 때 MonkeyRunner가 실패하는 이유

serial = '12345JKL' 
device = MonkeyRunner.waitForConnection(deviceId=serial) 
device.installPackage(path_to_apk) 

이것은 Windows 명령 셸을 사용하여 스크립트를 실행할 때 완벽하게 작동합니다.

"C:\dev\android\tools\monkeyrunner.bat" "C:\dev\my_script.py" -psome_parameter 

문제는 내가 my_script.py 인 TeamCity에 의해 실행 (기업 6.0.3)가 동일한 PC에 구성을 구축 할 것입니다 :이 오류가 발생합니다. 여기에 스택 추적을 찾으십시오. http://pastebin.com/CjWy95c3

처음에는 TC가 스크립트의 매개 변수를 망가 뜨리고 있다고 생각했습니다. C:\some_dir 내 현재 디렉토리 동안 그러나 TC 빌드에서 명령은

[00:55:12]: Starting: "C:\dev\android\tools\monkeyrunner.bat" "C:\dev\my_script.py" -psome_parameter 
in directory: C:\some_dir 

명령 쉘에서와 동일한 것이었다 따라 스크립트가 장치에 연결할 수 있고 내가 명령 쉘에 명령을 복사 할 때 잘 작동 로그인 .

TC 외부에서이 오류를 재연하지 못했습니다.

이 모든 것이 동일한 PC (Win 7 x64)에서 발생한다는 점을 강조하고 싶습니다. 이 스크립트는 명령 셸에서 실행되면 작동하지만 TC 빌드 구성에 의해 트리거 될 때 실패합니다 (항상 장치에 연결하려고 할 때 실패 함).

누군가가 올바른 방향으로 나를 가리킬 수 있다면 나는 이것이 일어나는 이유를 생각할 수 없으며 매우 행복 할 것입니다. 사전에

많은 감사

편집 : 그것은 MonkeyRunner.waitForConnection()에 한정되지 않고, 문제를 밝혀뿐만 아니라 MonkeyRunner.sleep(5)를 호출 할 때 발생한다. Stacktrace

MonkeyRunner와 TeamCity가 서로 잘 어울리지 않을 수 있습니까?

답변

0

동료가 문제를 조사한 후 3 일 동안이 문제의 원인을 찾을 수 없었습니다. 그러나 빌드 에이전트로 다른 시스템을 사용했을 때 문제는 사라졌습니다. 우리는 여전히이 NullPointerException의 원인을 알지 못합니다.

0

이것은 아마도 가져온 문제로 인해 발생했을 수 있습니다. 수입에 대한 문제는 TeamCity가 MonkeyRunner를 호출하는 방식 때문일 가능성이 큽니다. 나는 그것이 현재 디렉토리가 어지럽히는 것과 관련이 있다고 생각한다.

import os 
os.chdir("path") 

을 사용하여 .py 스크립트의 맨 위에있는 현재 디렉토리를 변경하십시오. (monkeyrunner를 가져 오기 전에) MonkeyRunner를 사용하여 디렉토리로 변경하려고합니다.

+0

고마워요. 충고에 대해 인간. 그러나이 문제는 TC 요원과 있었던 것으로 보인다. –

관련 문제