monkeyrunner로 Android 자동화 테스트 작성

Android 작업을 자동화하여 테스트 자동화



개발 환경



Mac 10.14.6

했던 일


  • Mac에서 monkeyrunner를 실행하기 위해 openjdk8 설치
  • monkeyrunner로 작업 기록
  • 기록 된 작업으로 실행

  • 참고로 한 사이트



    htps : // 이 m / 이코타 / ms / e f6bdb4, d6, b9, 912
    htps : //로 ゔぇぺぺr. 안 d로이 d. 이 m / s 츠에 오 / st / 몬케 y 루 응 r / 몬케 y로 ゔ ㄱ? hl = 그럼

    절차



    monkeyrunner 실행 환경 구축



    이미 Android Studio가 다운로드되고 있는 환경에서는 monkeyrunner가 아래에 있다.
    /Users/xxx/Library/Android/sdk/tools/bin/monkeyrunner

    터미널에서 monkeyrunner를 실행하면 다음 오류가 발생하여 실행할 수 없습니다.
    ./monkeyrunner 
    -Djava.ext.dirs=/Users/xxx/Library/Android/sdk/tools/lib:/Users/xxx/Library/Android/sdk/tools/lib/x86_64 is not supported.  Use -classpath instead.
    Error: Could not create the Java Virtual Machine.
    Error: A fatal exception has occurred. Program will exit.
    

    monkeyrunner는 "Java SE 10.0.2"로는 실행할 수 없기 때문에 OpenJDK 8을 install한다.
    $ brew tap homebrew/cask-versions
    ==> Tapping homebrew/cask-versions
    Cloning into '/usr/local/Homebrew/Library/Taps/homebrew/homebrew-cask-versions'...
    remote: Enumerating objects: 21, done.
    remote: Counting objects: 100% (21/21), done.
    remote: Compressing objects: 100% (17/17), done.
    remote: Total 225744 (delta 8), reused 6 (delta 4), pack-reused 225723
    Receiving objects: 100% (225744/225744), 58.27 MiB | 7.02 MiB/s, done.
    Resolving deltas: 100% (155275/155275), done.
    Tapped 155 casks (202 files, 64.5MB).
    
    $ brew cask install adoptopenjdk8
    ==> Downloading https://github.com/AdoptOpenJDK/openjdk8-binaries/releases/download/jdk8u252-b09/OpenJDK8U-jdk_x64_mac_hotspot_8u252b09.pkg
    ==> Downloading from https://github-production-release-asset-2e65be.s3.amazonaws.com/140418865/c5d7a700-80b2-11ea-83f0-4ba454f82e1c?X-Amz-Algorithm=AWS4-HMAC-SHA256
    ######################################################################## 100.0%
    ==> Verifying SHA-256 checksum for Cask 'adoptopenjdk8'.
    ==> Installing Cask adoptopenjdk8
    ==> Running installer for adoptopenjdk8; your password may be necessary.
    ==> Package installers may write to any location; options such as --appdir are ignored.
    Password:
    installer: Package name is AdoptOpenJDK
    installer: Installing at base path /
    installer: The install was successful.
    🍺  adoptopenjdk8 was successfully installed!
    

    openjdk8이 설치되었는지 확인합니다.
    $ /System/Library/Frameworks/JavaVM.framework/Versions/A/Commands/java_home -V
    Matching Java Virtual Machines (2):
        10.0.2, x86_64: "Java SE 10.0.2"    /Library/Java/JavaVirtualMachines/jdk-10.0.2.jdk/Contents/Home
        1.8.0_252, x86_64:  "AdoptOpenJDK 8"    /Library/Java/JavaVirtualMachines/adoptopenjdk-8.jdk/Contents/Home
    
    /Library/Java/JavaVirtualMachines/jdk-10.0.2.jdk/Contents/Home
    

    default java version을 openjdk8로 전환합니다.

    ~/.bashrc
    export JAVA_HOME=$(/System/Library/Frameworks/JavaVM.framework/Versions/A/Commands/java_home -v "1.8.0_252")
    PATH=${JAVA_HOME}/bin:${PATH}
    

    Android 기기에서 개발자 옵션을 사용하도록 설정하여 adb에 연결되어 있는지 확인합니다.
    $ adb devices
    List of devices attached
    18f8de88    device
    

    이제 실행 환경이 완성되었습니다.

    monkeyrunner로 작업을 기록하고 실행 스크립트로 변환하고 실행



    이 사이트에 쓰여진 대로 실행한다.
    htps : // 이 m / 이코타 / ms / e f6bdb4, d6, b9, 912
    $ /Users/xxx/Library/Android/sdk/tools/bin/monkeyrunner ~/run_monkeyrecoder.py
    

    휴대폰 화면과 조작한 로그가 오른쪽에 표시되므로 테스트하려는 시나리오를 실행한 후,
    Export Actions를 사용하여 작업 로그를 action_test.txt로 저장합니다.


    방금 저장한 action_test.txt를 @ikota의 변환기 스크립트를 사용하여 실행 스크립트로 변환합니다.
    $ python monkey_converter.py action_test.txt action_test.py
    

    변환해 생긴 action_test.py를 monkeyrunner로 실행하면, 자동으로 방금전에 행한 조작을 할 수 있게 된다.
    $ /Users/xxx/Library/Android/sdk/tools/bin/monkeyrunner ~/action_test.py
    

    이상으로,
    Mac OS에서 Monkey Runner를 사용하여 Android 기기의 제어를 자동화할 수 있었다.

    좋은 웹페이지 즐겨찾기