Upgrade to Pro — share decks privately, control downloads, hide ads and more …

Android Studio時代のuiautomatorを使った自動テスト

TOYAMA Sumio
January 15, 2015

Android Studio時代のuiautomatorを使った自動テスト

「【第13回】potatotips(iOS/Android開発Tips共有会)」の発表資料です。
uiautomatorのテストスクリプトをAndroid Studioで書く方法を解説しています。
build.gradleは以下のURLに置いてありますのでお使いください。
https://gist.github.com/sumio/8c08f751c27e827f3463

また、uiautomatorの解説については、こちらの連載の第2回・第3回の記事をご覧ください。
http://www.atmarkit.co.jp/ait/kw/smapho_testtool.html

TOYAMA Sumio

January 15, 2015
Tweet

More Decks by TOYAMA Sumio

Other Decks in Technology

Transcript

  1. ࣗݾ঺հ •  ࢯ໊:  ֎ࢁ७ੜ(TOYAMA  Sumio)   @sumio_tym  (twitter),  @sumio  (github)

      •  ॴଐ:  NTTιϑτ΢ΣΞגࣜձࣾ   •  ۀ຿಺༰:   – ࣾ಺Androidؔ࿈ϓϩδΣΫτٕज़ࢧԉ   – Androidؔ࿈ࣾ಺ݚमߨࢣ   •  ϓϥΠϕʔτ:   – STAR  (ςετࣗಈԽݚڀձ)   – uiautomator͕޷͖Ͱ͢   2  
  2. •  Android  SDKඪ४ͷUIςετࣗಈԽπʔϧ   http://developer.android.com/tools/testing/testing_ui.html   •  apk͕खݩʹແͯ͘΋ૢ࡞Ͱ͖Δ   – 

    ΞϓϦʹ·͕ͨͬͨૢ࡞΋OK!   –  ϓϦΠϯΞϓϦ΋OK!   •  ৄ͘͠͸ҎԼͷهࣄ(@ITʹͯެ։)ΛͲ͏ͧ   –  ʮAndroid  SDKඪ४ͷԿͰ΋ςετπʔϧuiautomator ͷجຊతͳ࢖͍ํʯ   http://www.atmarkit.co.jp/ait/articles/1410/07/news029.html   –  ʮAndroidςετͰศརͳuiautomatorviewerɺ UiScrollableͷ࢖͍ํɺςΩετೖྗAPI੍ݶࣄ߲ͷ   ճආํ๏ʯ   http://www.atmarkit.co.jp/ait/articles/1411/05/news038.html   3   uiautomatorͬͯ?
  3. uiautomator͸Eclipse޲͚ͷ··   – antͰ͔͠ϏϧυͰ͖ͳ͍   android  create  uitest-­‐project  Ͱbuild.xml  ੜ੒  

    – Android  StudioରԠΛ๬Ή੠͸͋Δ͕ɺ์ஔ   https://code.google.com/p/android/issues/detail?id=61122   5   ͸͡Ίʹ(2/2) uiautomatorͷͨΊʹEclipseىಈ͢Δͷ͕ਏ͍!  
  4. ΞδΣϯμ •  uiautomatorͷࣄ৘   •  Android  Studioͷࣄ৘   •  ղܾͷํ๏

      – ϏϧυͷGradleରԠ   – Android  StudioରԠ   •  ࠓޙͷ՝୊   •  ·ͱΊ   7  
  5. uiautomatorͷࣄ৘ •  apk΍aarͷੜ੒͸ෆཁ   AndroidManifest΍ϦιʔεϑΝΠϧ͸ແ͍   •  ίϯύΠϧ͚࣌ͩandroid.jarͳͲ͕ඞཁ   ˞uiautomator.jar΋ඞཁͰ͢

      •  dexԽ͕ඞཁ 8   Java? Android? Ϗϧυͷ؍఺ͰݟΔͱͲͬͪ෇͔ͣ   java  plugin΋android  plugin΋࢖͑ͳ͍...  
  6. Android  Studioͷࣄ৘ Ϗϧυઃఆ͸build.gradle͕શͯ   •  ґଘϥΠϒϥϦͷΫϥεύε   dependencies  {  ...

     }  ͚ͩΛݟ͍ͯΔΑ͏ͩ   •  ιʔεύε   sourceSets  {  ...  }͚ͩΛݟ͍ͯΔΑ͏ͩ 9   ˞ਪଌͰ͢
  7. ϏϧυͷGradleରԠ:  antʹ͓೚ͤ 11   // build.xmlΛಡΈࠐΉ ProjectHelper.configureProject(ant.project, file('build.xml')); // local.properties͔Β<AHDROID_HOME>΁ͷύεΛऔಘ͢Δ

    def sdkDir = ant.properties['sdk.dir'] // build.xmlʹఆٛ͞Εͨbuild, install, cleanλʔήοτΛɺ // ͦΕͧΕuiautomatorBuild, uiautomatorInstall, uiautomatorCleanͱ͍͏໊લͷgraldeλεΫͱͯ͠ొ࿥͢Δɻ ['build', 'install', 'clean'].each { antTargetName -> task "uiautomator${antTargetName.capitalize()}" << { ant.project.executeTarget(antTargetName) } } https://gist.github.com/sumio/8c08f751c27e827f3463 ant.importBuild͸࢖Θͳ͍
  8. apply plugin: 'java' def targetDir = ant.properties['target'] dependencies { compile

    files("${sdkDir}/platforms/${targetDir}/ android.jar") compile files("${sdkDir}/platforms/${targetDir}/ uiautomator.jar") } // Android StudioͰɺsrc/௚ԼΛςετίʔυͱೝࣝͤ͞Δ sourceSets { main { java { srcDir 'src' } } } Android  StudioରԠ:  μϛʔͷએݴ 12   https://gist.github.com/sumio/8c08f751c27e827f3463 "compile"Λ࢖͏ͨΊ͚ͩʹ   javaϓϥάΠϯΛద༻