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. Android  Studio࣌୅ͷ  
    uiautomatorΛ࢖ͬͨࣗಈςετ
    2015.01.15  
    @sumio_tym  (TOYAMA  Sumio)
    potatotips  (iOS/Android։ൃTipsڞ༗ձ)  ୈ13ճ

    View Slide

  2. ࣗݾ঺հ
    •  ࢯ໊:  ֎ࢁ७ੜ(TOYAMA  Sumio)  
    @sumio_tym  (twitter),  @sumio  (github)  
    •  ॴଐ:  NTTιϑτ΢ΣΞגࣜձࣾ  
    •  ۀ຿಺༰:  
    – ࣾ಺Androidؔ࿈ϓϩδΣΫτٕज़ࢧԉ  
    – Androidؔ࿈ࣾ಺ݚमߨࢣ  
    •  ϓϥΠϕʔτ:  
    – STAR  (ςετࣗಈԽݚڀձ)  
    – uiautomator͕޷͖Ͱ͢  
    2  

    View Slide

  3. •  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ͬͯ?

    View Slide

  4. ॕAndroid  Studio  1.0ϦϦʔε!  
    4  
    ͸͡Ίʹ(1/2)
    Eclipse  +  ADT͸ϨΨγʔѻ͍
    http://developer.android.com/sdk/index.html  

    View Slide

  5. 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ىಈ͢Δͷ͕ਏ͍!  

    View Slide

  6. ঺հ͢ΔTips
    uiautomatorͷςετεΫϦϓτΛ  
    Android  StudioͰॻ͘ํ๏Λڞ༗͠·͢
    6  

    View Slide

  7. ΞδΣϯμ
    •  uiautomatorͷࣄ৘  
    •  Android  Studioͷࣄ৘  
    •  ղܾͷํ๏  
    – ϏϧυͷGradleରԠ  
    – Android  StudioରԠ  
    •  ࠓޙͷ՝୊  
    •  ·ͱΊ  
    7  

    View Slide

  8. uiautomatorͷࣄ৘
    •  apk΍aarͷੜ੒͸ෆཁ  
    AndroidManifest΍ϦιʔεϑΝΠϧ͸ແ͍  
    •  ίϯύΠϧ͚࣌ͩandroid.jarͳͲ͕ඞཁ  
    ˞uiautomator.jar΋ඞཁͰ͢  
    •  dexԽ͕ඞཁ
    8  
    Java?
    Android?
    Ϗϧυͷ؍఺ͰݟΔͱͲͬͪ෇͔ͣ  
    java  plugin΋android  plugin΋࢖͑ͳ͍...  

    View Slide

  9. Android  Studioͷࣄ৘
    Ϗϧυઃఆ͸build.gradle͕શͯ  
    •  ґଘϥΠϒϥϦͷΫϥεύε  
    dependencies  {  ...  }  ͚ͩΛݟ͍ͯΔΑ͏ͩ  
    •  ιʔεύε  
    sourceSets  {  ...  }͚ͩΛݟ͍ͯΔΑ͏ͩ
    9  
    ˞ਪଌͰ͢

    View Slide

  10. ղܾͷํ๏
    •  ϏϧυͷGradleରԠ:  
    Gradleͷantαϙʔτʹ͓೚ͤ  
    •  Android  StudioରԠ:  
    μϛʔͷdependenciesͱsourceSetsΛએݴ  
    10  

    View Slide

  11. ϏϧυͷGradleରԠ:  antʹ͓೚ͤ
    11  
    // build.xmlΛಡΈࠐΉ
    ProjectHelper.configureProject(ant.project,
    file('build.xml'));
    // local.properties͔Β΁ͷύεΛऔಘ͢Δ
    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͸࢖Θͳ͍

    View Slide

  12. 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ϓϥάΠϯΛద༻  

    View Slide

  13. ࠓޙͷ՝୊
    •  build.xmlʹཔΒͳ͍  
    •  dependenciesͷαϙʔτ  
    – mavenͰݴ͏  
    ʮcompileʯʮprovidedʯείʔϓ͕ඞཁ  
    •  Ώ͘Ώ͘͸ϓϥάΠϯԽ͍ͨ͠  
    13  

    View Slide

  14. ಈ࡞͢Δαϯϓϧ͸ͪ͜ΒΛͲ͏ͧ  
    https://gist.github.com/sumio/8c08f751c27e827f3463  
     
    ˞ uiautomatorϓϩδΣΫτͷbuild.xmlͱಉ͡σΟϨΫτϦ
    ʹஔ͍͍ͯͩ͘͞  
    14  
    ͝ਗ਼ௌ͋Γ͕ͱ͏͍͟͝·ͨ͠

    View Slide