Android Testing Support Library(ATSL)ãã¼ã¸ã§ã³ 1.0 ããªãªã¼ã¹ããã¾ãã。
ATSL ãã¼ã¸ã§ã³ 1.0 ã¯æ¢åã®ãã¹ã API ã®ã¡ã¸ã£ã¼ ã¢ãããã¼ãã§、ããããã®æ°æ©è½、ããã©ã¼ãã³ã¹ã®æ¹å、å®å®å、ãã°ä¿®æ£ãå«ã¾ãã¦ãã¾ã。ãµãã¼ãçµäºã¨ãªã£ã Android ãã©ãããã©ã¼ã ã®ãã¹ã API ã¨åçã®æ©è½ããã¹ã¦æä¾ããã¦ãã¾ã。ä»åã®ãªãªã¼ã¹ã«ã¯、
ãã«ãããã»ã¹ Espresso ã®ãã¤ãã£ã ãµãã¼ãã、
Android Test Orchestrator ãªã©、
Google I/O 2017 ã®ã»ãã·ã§ã³ã§ã話ãããå¤ãã®æ©è½ã追å ããã¦ãã¾ã。
ãããããã¨ã«、ATSL ã¯ãã¼ã¸ã§ã³ 1.0 ãã、Google ã® Maven ã¬ãã¸ããªã§å
¬éãããããã«ãªãã¾ãã®ã§、çããã®ãã«ãã§ç°¡åã«ä½¿ã£ã¦ããã ããããã«ãªãã¾ã。ãã®ã¬ãã¸ããªã®è©³ããå©ç¨æ¹æ³ã«ã¤ãã¦ã¯、
Google Maven ã¬ãã¸ããªå©ç¨ã¬ã¤ããã覧ãã ãã。ãªã、ä»å¾ã¯ãã©ãããã©ã¼ã ã®ã¢ãããã¼ãã«ãã¹ãç¨ã¤ã³ãã©ã¹ãã©ã¯ãã£ã®ã¢ãããã¼ãã¯å«ã¾ããªããªãã¾ãã®ã§、ãæ³¨æãã ãã。ã¾ã ãã¹ãã ATSL ã«ã¢ããã°ã¬ã¼ããã¦ããªãæ¹ã¯、ãã²ãã®ã¿ã¤ãã³ã°ã§ã¢ããã°ã¬ã¼ããã¾ããã。
ããä¸ç¹、Android ã®ãã¹ã ããã¥ã¡ã³ãã®å¤§è¦æ¨¡ãªæ¹è¨ã«ã¤ãã¦ããç¥ãããã¾ã。å¤ããã¹ã ããã¥ã¡ã³ãã¯、
GitHub ã¦ã§ããµã¤ããã
developers.android.com/testing ã«ç§»è¡ããã¦ãã、ãã¹ã¦ã®ãã¹ã ããã¥ã¡ã³ãã 1 ãæã§åç
§ã§ããããã«ãªãã¾ãã。ãã®ãã、Android ã§ãã¹ããæ¸ãããå®è¡ãããããæ¹æ³ã調ã¹ããããªã£ã¦ãã¾ã。
ããã§ã¯çæ§ãå¾
ã¡ããã®、ä»åã®ãªãªã¼ã¹ã§æä¾ãããæ°ãã API ã®æ¦è¦ã¨ãã¼ã«ã«ã¤ãã¦ã説æãã¾ã。
Espresso ã®æ¹å
Espresso 3.0.0 ã«ã¯、ãã°ãããæ°æ©è½ãæè¼ãã、å
¨è¬çãªããã©ã¼ãã³ã¹ãæ¹åããã¦ãã¾ã。ä¸»ãªæ©è½ã¨ãã¦、ãã«ãããã»ã¹ Espresso、ã¢ã¤ããªã³ã° ã¬ã¸ã¹ããª、æ°ããã¢ã¤ããªã³ã° ãªã½ã¼ã¹ãªã©ãããã¾ã。ãããã®æ°æ©è½ã«ã¤ãã¦ããã«æ·±ãæãä¸ãã¦ããã¾ããã。
ãã«ãããã»ã¹ Espresso
Android O 以éã§ã¯、ã¢ããªã®ããã©ã«ã ããã»ã¹å¤ã®è¨æ¸¬ãã¹ãããã©ãããã©ã¼ã ã§ãµãã¼ãããã¦ãã¾ã(Android O ããåã¯、ã¢ããªã®ããã©ã«ã ããã»ã¹ã§ã¢ããªã®ã³ã³ãã¼ãã³ãããã¹ããããã¨ããã§ãã¾ããã§ãã)。ãã«ãããã»ã¹ Espresso ã¯、ãã®ãã¹ããå¯è½ã«ãã¾ã。ããã¯、Espresso ã«ããåæãä¿è¨¼ãã¤ã¤、ããã»ã¹å¢çãã¾ããã ã¢ããªã® UI ã¤ã³ã¿ã©ã¯ã·ã§ã³ã®ãã¹ããã·ã¼ã ã¬ã¹ã«å®è¡ã§ããããã«ãããã®ã§ã。
ããããç¹ã¯、Espresso ããã¹ã¦ã®ä½æ¥ãè¡ã£ã¦ããããã¨ã§ã。è¨å®ãä¸å夿´ããã«、UI ãè¤æ°ããã»ã¹ã§æä½ã§ãã¾ã。Espresso ãã¹ãã¯、åä¸ããã»ã¹ã®ã¢ããªã¨åãããã«è¨è¿°ã§ãã¾ã。Espresso ãèªåçã«ããã»ã¹ã® IPC ãå¦çã、ããã»ã¹éã®åæãã¨ã£ã¦ããã¾ã。
次ã®å³ã¯、Espresso ã®è¤æ°ã®ã¤ã³ã¹ã¿ã³ã¹ããäºãã«éä¿¡ããä»çµã¿ã示ãã¦ãã¾ã。
ãã«ãããã»ã¹ Espresso ã®è©³ç´°ãä½¿ç¨æ¹æ³ãç¥ãããæ¹ã¯、
ããã¥ã¡ã³ãã
ãã«ãããã»ã¹ã®ãµã³ãã«ãã覧ãã ãã。
ã¢ã¤ããªã³ã° ã¬ã¸ã¹ããª
ã¢ããªã®ä¸ã«ã¯、Gradle ã®ãã«ã ãã¬ã¼ãã¼ã Dagger ãªã©ã®ä¾åæ§æ³¨å
¥ãã¬ã¼ã ã¯ã¼ã¯ã使ã£ã¦ã¢ã¤ããªã³ã° ãªã½ã¼ã¹ãç»é²ãããã¹ããã«ãè¨å®ãçæãã¦ãããã®ãããã§ããã。ã¾ã、ã¢ã¯ãã£ããã£ãéãã¦åç´ã«ã¢ã¤ããªã³ã° ãªã½ã¼ã¹ãå
¬éãã¦ããã¢ããªãããã§ããã。ãããã£ãã¢ããã¼ãã§åé¡ã«ãªãã®ã¯、éçºã¯ã¼ã¯ããã¼ãè¤éã«ãªã、ã«ãã»ã«åãç ´ããã¦ãã¾ãå ´åããããã¨ã§ã。Espresso ã®ææ°ãªãªã¼ã¹ã§ã¯、ã¢ããªã®ã³ã¼ãããã®ã¢ã¤ããªã³ã° ãªã½ã¼ã¹ã®ç»é²ãç°¡åã«ãªã£ã¦ãã¾ã。ããã¯、æ°ãã
IdlingRegistry API ã使ã£ã¦å®ç¾ããã¦ãã¾ã。
IdlingRegistry ã¯、Espresso ã©ã¤ãã©ãªå
¨ä½ãåãè¾¼ã¾ãã«ä½¿ãã軽éã¬ã¸ã¹ããªã§ã。ãã®ãã、ã¢ããªã®ã³ã¼ãããç°¡åã«ãªã½ã¼ã¹ã®ç»é²ãè¡ããã¨ãã§ãã¾ã。ãã® API ããã«ãããã»ã¹ Espresso ã¨çµã¿åãããã¨、ã¢ããªã®ã³ã¼ãå
ã®ä»»æã®ããã»ã¹ããã¢ã¤ããªã³ã° ãªã½ã¼ã¹ãç»é²ã§ãã¾ã。
Espresso ã¯ã©ã¹ããç»é²ãè¡ãæ©è½ã¯、ãµãã¼ã対象å¤ã¨ãªã£ã¦ãã¾ã。
ã¢ã¤ããªã³ã° ãªã½ã¼ã¹
ã«ã¹ã¿ã ã®ã¢ã¤ããªã³ã° ãªã½ã¼ã¹ã®è¨è¿°ã¯æéãããããã®ã§ã。ãã®ãã、Espresso 3.0.0 ã«ã¯、ã¹ã¬ããã®åæãè¡ãéã«ç°¡åã«å©ç¨ã§ãããã¾ãã¾ãªã¢ã¤ããªã³ã° ãªã½ã¼ã¹ãæè¼ããã¦ãã¾ã。æ°ãã追å ããããªã½ã¼ã¹ã«ã¯、
IdlingThreadPoolExecutor ã
IdlingScheduledThreadPoolExecutor ãªã©ãããã¾ã。ä»å¾ã、ããã«è¿½å ãããäºå®ã§ã。
æ°ããã¢ã¤ããªã³ã° ãªã½ã¼ã¹ãæ´»ç¨ããã«ã¯、æ°ãã追å ãããæ¬¡ã®ä¾åé¢ä¿ã build.gradle ãã¡ã¤ã«ã«è¿½å ãã¾ã。
androidTestCompile "com.android.support.test.espresso.idling:idling-concurrent:3.0.0"
ããã«、ä»åã®ãªãªã¼ã¹ã§ã¯、以åã« Espresso ã® contrib ããã±ã¼ã¸ã§ãµãã¼ã対象å¤ã¨ãªã£ã¦ãã
CountingIdlingResource ãåé¤ããã¦ãã¾ã。ãã®ãã、Espresso ã®ã¢ã¤ããªã³ã° ãªã½ã¼ã¹ã«é
ç½®ããã¦ããæ°ãã
CountingIdlingResource ã®ããã±ã¼ã¸ã使ã£ã¦ãã¹ããã¢ãããã¼ãããå¿
è¦ãããã¾ã。詳ããç§»è¡æ¹æ³ã«ã¤ãã¦ã¯、
ãªãªã¼ã¹ãã¼ããã覧ãã ãã。
ProviderTestRule
ContentProvider ãªãã¸ã§ã¯ãããã¹ãããå ´åã¯、
ProviderTestCase2 ã®ä»£ããã«
ProviderTestRule ã使ããã¨ãã§ãã¾ã。
ProviderTestRule ã§ã¯、ç¾å¨ AndroidJUnit4 ã§å©ç¨ã§ããä»ã®ãã¹ãã«ã¼ã«ã¨ç°¡åã«é£æºã§ããæ¹æ³ãæä¾ããã¦ãã¾ã。
ProviderTestRule ã«ã¯、åæåç¨ API ã、ãã¹ãã®éã«
ContentProvider ã«å¯¾ãã¦å®è¡ããã³ãã³ããå«ã¾ãã¦ãã¾ã。SQLite ãã¼ã¿ãã¼ã¹ã«åºã¥ã
ContentProvider ã使ã£ã¦ããå ´åã¯、
ProviderTestRule ã³ãã³ãã使ã£ã¦ãã¼ã¿ãã¼ã¹ ãã¡ã¤ã«ãåæåã³ãã³ããè¨å®ã§ãã¾ã。
詳細ã«ã¤ãã¦ã¯、
ProviderTestRule ã®ããã¥ã¡ã³ããã覧ãã ãã。
ãã¼ããã·ã§ã³ä»ä¸ã«ã¼ã«
Android M(API ã¬ãã« 23)ã§ã¯、å®è¡æã«ã¢ããªããã¼ããã·ã§ã³ããªã¯ã¨ã¹ãã§ããããã«ãªã£ã¦ãã¾ã。ãã ã、å®è¡æã«ãã¼ããã·ã§ã³ããªã¯ã¨ã¹ããããã¤ã¢ãã°ã«ãã£ã¦、ãã¹ããç¶ç¶ã§ããªãç¶æ
ã«ãªã、çµæã¨ãã¦ãã¹ãã失æããå ´åãããã¾ã。
GrantPermissionRule ã使ãã¨、ãã¤ã¢ãã°ã®ãããã¢ãããå®å
¨ã«ã¹ãããã、ã¦ã¼ã¶ã¼ãå®è¡æã«ã¢ããªã«ãã¼ããã·ã§ã³ãä¸ããç¶æ
ãã·ãã¥ã¬ã¼ããããã¨ãã§ãã¾ã。
Android Test Orchestrator
é常、AndroidJUnitRunner ã¯、åãè¨æ¸¬ããã»ã¹ã®ãã¹ã¦ã®ãã¹ããå®è¡ãã¾ãã、ããã«ãã£ã¦ãã¾ãã¾ãªåé¡ãèµ·ãããã¨ãããã¾ã。ãã¨ãã°、è¤æ°ã®ãã¹ããã¡ã¢ãªå
ã§ç¶æ
ãå
±æãã¦ããå ´å、1 ã¤ã®ãã¹ããã¯ã©ãã·ã¥ããã¨、æ®ãã®ãã¹ãã¹ã¤ã¼ããå®è¡ã§ããªããªãã¾ã。
é£ç¶ãã¦è¤æ°ã®
adb ã³ãã³ããçºè¡ããã°、å¥ã
ã«ãã¹ããè¡ããã¨ãã§ãã¾ãã、ãã¹ãå´ã®å¦çã®è² è·ãå¢å ãããã¨ã«ãªãã¾ã。æ°ãã Android Test Orchestrator ã使ãã¨、次ã®å³ã®ããã«、端æ«ä¸ã§ãã¹ããå®å
¨ã«åé¢ãããã¨ãã§ãã¾ã。
ãã ã、ãã¹ããæåããããã«ç¶æ
ãå
±æãããã¨ã
å¿
è¦ ãªå ´å、Orchestrator ã使ãã¨ãã¹ãã失æãããã¨ã«ãªãã¾ã。ãã®åä½ã¯、æå³çãªãã®ã§ã。æ¬æç¨¿ã®å·çæç¹ã§、Android Test Orchestrator ã¯ãã¼ã¿çã§ãã、ã³ãã³ãã©ã¤ã³ããå©ç¨ãããã®ã¨ãªã£ã¦ãã¾ã。è¿æ¥ä¸ã«ã¯、Firebase Test Lab 㨠Android Studio ã¸ã®çµ±åãè¡ãããäºå®ã§ã。
詳細ã«ã¤ãã¦ã¯、
Android Testing Orchestrator ãããããã¼ ã¬ã¤ããã覧ãã ãã。
AndroidJUnitRunner
AndroidJUnitRunner ã«ã、次ã®ãããªè¿½å æ©è½ãæè¼ããã¦ãã¾ã。
JUnitParams ãå©ç¨å¯è½ã«ãªãã¾ãã。
- Runner ã®å¼æ°ã使ã£ã¦ã¯ã©ã¹ãã¼ãã¨ã«ã¹ã¿ã JUnit ãã¹ããã£ã«ã¿ã®è¨å®ãè¡ããããã«ãªãã¾ãã。
ãã¹ã ã¯ã¼ã¯ããã¼ã®ä¸ç°ã¨ãã¦、æ«å®çã«ä½æ、è¨å®ããã¢ã¯ãã£ããã£ã®ãã¹ããè¡ãããå ´åãããã§ããã。ãã®ãããªå ´åã«、
InterceptingActivityFactory ã使ã£ã¦
MonitoringInstrumentation(ããã«、æ¡å¼µæ©è½ã¨ãã¦
AndroidJUnitRunner)ãè¨å®ã§ããããã«ãªã£ã¦ãã¾ã。ãã¹ãã®éã«ã¯、ã³ã³ãã¤ã«æã®ã¤ã³ã¸ã§ã¯ã·ã§ã³ã«ä¾åããã«、ãã¹ãåºæã®è¨å®ã®ã¢ã¯ãã£ããã£ã使ã§ãã¾ã。
æ¬æç¨¿ã§ç´¹ä»ããæ¦è¦ã¯、ATSL ã«å¯¾ãããã£ã¨ãéè¦ãªå¤æ´ç¹ã®ã»ãã®ä¸é¨ãç´¹ä»ãããã®ã§ã。ç¥ã£ã¦ããã¹ã夿´ç¹ã¯、ã¾ã ä»ã«ãããããããã¾ã。詳ãããªãªã¼ã¹å
容ã«ã¤ãã¦ã¯、
ãªãªã¼ã¹ãã¼ããã覧ãã ãã。
æå¾ã«ãªãã¾ãã、ä»åãªãªã¼ã¹ãããæ©è½ã«è²¢ç®ãã¦ãã ãã£ããã¹ã¦ã®ãããããã¼ã®çãã、ã©ãããããã¨ããããã¾ã。ã¾ã、ç§ãã¡ã«ååã、Android Testing Support Library ã®ãã¬ãªãªã¼ã¹çã«è²´éãªãã£ã¼ãããã¯ããå¯ããã ãã£ã American Express ã¢ãã¤ã« ã¨ã³ã¸ãã¢ãªã³ã° ãã¼ã ã® Android ãã¹ãã®ã¨ãã¹ãã¼ã、Slack、GDE ã® Chiu-Ki Chan ã«æè¬ãããã¾ã。
ATSL ãã¼ã ã¯、çãã¾ã®ãã¹ãã®æåããç¥ããã¦ãã¾ã。
Reviewed by
Yuichi Araki - Developer Relations Team