0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 3 years have passed since last update.

monkeyrunnerでAndroidの自動化テスト作成

Posted at

Androidの操作を自動化してテストを自動化する

開発環境

Mac 10.14.6

やったこと

  • Mac でmonkeyrunnerを動かすためにopenjdk8のインストール
  • monkeyrunner で操作を記録
  • 記録した操作で実行

参考にしたサイト

https://qiita.com/ikota/items/ef6bdb4dad6ab9ba912a
https://developer.android.com/studio/test/monkeyrunner/MonkeyDevice?hl=ja

##手順

monkeyrunnerの実行環境の構築

すでにAndroid StudioがDownloadされている環境では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 で操作を記録して、実行スクリプトに変換して実行

こちらのサイトに書かれている通りに実行する。
https://qiita.com/ikota/items/ef6bdb4dad6ab9ba912a

$ /Users/xxx/Library/Android/sdk/tools/bin/monkeyrunner ~/run_monkeyrecoder.py

携帯の画面と操作したログが右側に表示されるので、テストしたいシナリオを実行した後に、
Export Actions をして操作ログをaction_test.txtとして保存する。
image.png

先ほど保存したaction_test.txtを @ikota さんのconverterスクリプトを使って実行用のスクリプトに変換する。

$ 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 端末の制御を自動化できた。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?