2012-10-02 4 views
3

자동화 된 테스트 케이스를 수행하기 위해 monkeyrunner 스크립트를 사용할 계획이고 robotframework를 사용하고 싶습니다. (나는 robotium에 관심이 없습니다). 나는 http://blog.mykhailo.com/2011/02/how-to-sikuli-and-robot-framework.htmlMonkeyRunner with Robotframework

에서 robotframework와 sikuli 스크립트 자동화를위한 훌륭한 튜토리얼 robotframework 및 monkeyrunner으로, 비슷한 일을 할 수있는 방법이를 보았다?

내 견본 monkeyrunner 스크립트는 monkeyrunner와 함께 호출 할 때 올바르게 실행됩니다.

from __future__ import with_statement 
from com.android.monkeyrunner import MonkeyRunner, MonkeyDevice 

def testCase() : 
    device = MonkeyRunner.waitForConnection() 
    result2 = device.takeSnapshot() 
    # Writes the screenshot to a file 
    result2.writeToFile("scr.png","png") 

def my_keyword(): 
    print 'Hello, world!' 

if __name__ == '__main__': 
    testCase() 

나는 roboframework와 동일하게 호출하려고합니다. 나는 다음을 시도하고있다. 나는 다음 호출이 맞는지 아닌지를 확신하지 못한다. 단순히 sikuli 자동화 예제에서 복사하고 수정했다.

monkey_jar=/home/user/android-sdks/tools/lib/monkeyrunner.jar 
guava_jar=/home/user/android-sdks/tools/lib/guavalib.jar 
java -cp "robotframework-2.7.4.jar:$monkey_jar:$guava_jar" -Dpython.path="/home/user/android-sdks/tools/lib/" \ 
org.robotframework.RobotFramework --pythonpath=./ --outputdir=results --loglevel=TRACE $1 

이렇게하면 다음 오류가 발생합니다.

Importing test library 'MyLibrary' failed: NoClassDefFoundError: Could not initialize class com.android.monkeyrunner.MonkeyDevice 
java.lang.NoClassDefFoundError: 
    at java.lang.Class.forName0(Native Method) 
    at java.lang.Class.forName(Class.java:247) 
    at MyLibrary$py.f$0(/home/user/automation/DemoScripts/MyLibrary.py:9) 
    at MyLibrary$py.call_function(/home/user/automation/DemoScripts/MyLibrary.py) 
    at robot.utils.importer$py._import$13(/Users/jmalinen/Documents/workspace/robot/tmp-jar-dir/Lib/robot/utils/importer.py:154) 
    at robot.utils.importer$py.call_function(/Users/jmalinen/Documents/workspace/robot/tmp-jar-dir/Lib/robot/utils/importer.py) 
    at robot.utils.importer$py.import_$28(/Users/jmalinen/Documents/workspace/robot/tmp-jar-dir/Lib/robot/utils/importer.py:241) 
    at robot.utils.importer$py.call_function(/Users/jmalinen/Documents/workspace/robot/tmp-jar-dir/Lib/robot/utils/importer.py) 
    at robot.utils.importer$py._import_class_or_module$4(/Users/jmalinen/Documents/workspace/robot/tmp-jar-dir/Lib/robot/utils/importer.py:67) 
    at robot.utils.importer$py.call_function(/Users/jmalinen/Documents/workspace/robot/tmp-jar-dir/Lib/robot/utils/importer.py) 
    at robot.utils.importer$py.import_class_or_module$3(/Users/jmalinen/Documents/workspace/robot/tmp-jar-dir/Lib/robot/utils/importer.py:64) 
    at robot.utils.importer$py.call_function(/Users/jmalinen/Documents/workspace/robot/tmp-jar-dir/Lib/robot/utils/importer.py) 
    at robot.run$py.main$3(/Users/jmalinen/Documents/workspace/robot/tmp-jar-dir/Lib/robot/run.py:367) 
    at robot.run$py.call_function(/Users/jmalinen/Documents/workspace/robot/tmp-jar-dir/Lib/robot/run.py) 
    at robot.utils.application$py._execute$10(/Users/jmalinen/Documents/workspace/robot/tmp-jar-dir/Lib/robot/utils/application.py:87) 
    at robot.utils.application$py.call_function(/Users/jmalinen/Documents/workspace/robot/tmp-jar-dir/Lib/robot/utils/application.py) 
    at robot.utils.application$py.execute_cli$5(/Users/jmalinen/Documents/workspace/robot/tmp-jar-dir/Lib/robot/utils/application.py:45) 
    at robot.utils.application$py.call_function(/Users/jmalinen/Documents/workspace/robot/tmp-jar-dir/Lib/robot/utils/application.py) 
    at robot.run$py.run_cli$6(/Users/jmalinen/Documents/workspace/robot/tmp-jar-dir/Lib/robot/run.py:396) 
    at robot.run$py.call_function(/Users/jmalinen/Documents/workspace/robot/tmp-jar-dir/Lib/robot/run.py) 
    at robot.jarrunner$py._run$3(/Users/jmalinen/Documents/workspace/robot/tmp-jar-dir/Lib/robot/jarrunner.py:60) 
    at robot.jarrunner$py.call_function(/Users/jmalinen/Documents/workspace/robot/tmp-jar-dir/Lib/robot/jarrunner.py) 
    at robot.jarrunner$py.run$2(/Users/jmalinen/Documents/workspace/robot/tmp-jar-dir/Lib/robot/jarrunner.py:53) 
    at robot.jarrunner$py.call_function(/Users/jmalinen/Documents/workspace/robot/tmp-jar-dir/Lib/robot/jarrunner.py) 
    at org.robotframework.RobotFramework.run(RobotFramework.java:62) 
    at org.robotframework.RobotFramework.main(RobotFramework.java:37) 
PYTHONPATH: 
    /home/user/automation/DemoScripts 
    /home/user/automation/DemoScripts/robotframework-2.7.4.jar/Lib/robot/libraries 
    /home/user/automation/DemoScripts/robotframework-2.7.4.jar/Lib 
    /home/user/android-sdks/tools/lib/ 
    /home/user/automation/DemoScripts/Lib 
    __classpath__ 
    __pyclasspath__/ 
    . 
    /home/user/automation/DemoScripts 
CLASSPATH: 
    robotframework-2.7.4.jar 
    /home/user/android-sdks/tools/lib/monkeyrunner.jar 
    /home/user/android-sdks/tools/lib/guavalib.jar 
============================================================================== 

나는 roboframework와 함께 monkeyrunner 테스트 케이스를 실행하는 것이 가능하다고 믿습니다.

입력 사항이 있습니까?

+0

죄송합니다, 답변이 없지만 관심이 있습니다. 그것과 아래쪽 투표는 안드로이드의 자연스런 균형을 회복하기 위해 어리석은 것처럼 보입니다. – Simon

+0

감사합니다. 게시물에 대한 자세한 내용을 추가했습니다. 누군가가 의견을 제공하기를 바랍니다. –

답변

2

음, 며칠 동안 노력한 후에 Robotframework에서 MonkeyRunner 스크립트를 사용할 수 있음을 발견했습니다.

요약하면 다음과 같이 monkeyrunner와 함께 로봇 프레임 워크를 시작할 수 있습니다.

export cpath=$(echo libs/*.jar | tr ' ' ':') 
java -Dpython.path=$cpath -jar robotframework-2.7.4.jar robo-tests.txt 

그러나 유일한 문제는 monkeyrunner의 주요 따라서 널 포인터 예외를 초래 ChimpChat 객체를 초기화하지, 호출되지 않은이었다. MonkeyRunner.java에서 수정했고 새로운 monkeyrunner.jar를 만들었습니다. 이것으로 roboframework에서 monkeyrunner 스크립트를 실행할 수 있습니다. 단계별 자습서로 단계를 작성하고 게시하도록 노력할 것입니다.

+0

튜토리얼을 기다리는 중 ... – David

2

@jollychang이

이이 MonkeyRunner.java을 파일에 추가하려면이 방법을

if(chimpchat == null) { 
     Map<String, String> chimp_options = new TreeMap<String, String>(); 
     chimp_options.put("backend", "adb"); 
     chimpchat = ChimpChat.getInstance(chimp_options); 
     MonkeyRunner.setChimpChat(chimpchat); 
    } 

전에 :

JythonUtils.convertDocAnnotationsForClass(MonkeyRunner.class, dict); 

다음 새 monkeyrunner.jar을;

어떤 다른 사람이 같은 항아리가 필요합니다 Libraries

는 이전 대신 새 monkeyrunner.jar를 사용합니다.

내 컴퓨터 사용에

이 :

자바 -cp/사용자/komejun/문서/devtool/안드로이드/안드로이드-SDK-mac_x86/도구/lib에 다음 명령을 실행 로봇 : 마지막에

/chimpchat.jar:/Users/komejun/Documents/devtool/android/android-sdk-mac_x86/tools/lib/ddmlib.jar:/Users/komejun/Documents/devtool/android/android-sdk-mac_x86/tools/lib /guavalib.jar:/Users/komejun/Documents/devtool/android/android-sdk-mac_x86/tools/lib/monkeyrunner.jar:/Users/komejun/Documents/devtool/android/android-sdk-mac_x86/tools/lib/sdklib.jar : /Users/komejun/Downloads/robotframework-2.7.5.jar -Dcom.android.monkeyrunner.bindir = "/ Users/komejun/Documents/devtool/android/android-sdk-mac_x86/tools"-Djava.library. path = "/ Users/komejun/Documents/devtool/android-android-sdk-mac_x86/tools/lib"org.robotframework.RobotFramework a.txt