Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Androidテスティング実践 基礎編
Search
NTTテクノクロス株式会社
July 22, 2016
Technology
2
310
Androidテスティング実践 基礎編
NTTソフトウェア社内のソフト道場研修で実施した、Androidテスティング実践研修テキストの基礎編です。
NTTテクノクロス株式会社
July 22, 2016
Tweet
Share
More Decks by NTTテクノクロス株式会社
See All by NTTテクノクロス株式会社
NTT TechConference #2 Closing Keynote
ntttechnocross
4
2.5k
僕らはStackStormをどう使うべきか / NTT TechConference #2 StackStorm
ntttechnocross
1
3.3k
ネットワークスイッチ構築実践 2.STP・RSTP・PortSecurity・StormControl・SPAN・Stacking編
ntttechnocross
0
310
ネットワークスイッチ構築実践 1.VLAN・LinkAggregation編
ntttechnocross
0
350
ネットワーク構築訓練入門
ntttechnocross
1
240
Androidテスティング実践2 システムテスト編
ntttechnocross
1
300
Androidテスティング実践3 ユニットテスト・CI編
ntttechnocross
0
300
WebRTC Training
ntttechnocross
0
310
Androidアプリケーション開発中級研修 前編
ntttechnocross
2
510
Other Decks in Technology
See All in Technology
第1回 国土交通省 データコンペ参加者向け勉強会③- Snowflake x estie編 -
estie
0
130
Security-JAWS【第35回】勉強会クラウドにおけるマルウェアやコンテンツ改ざんへの対策
4su_para
0
180
ISUCONに強くなるかもしれない日々の過ごしかた/Findy ISUCON 2024-11-14
fujiwara3
8
870
日経電子版のStoreKit2フルリニューアル
shimastripe
1
140
Shopifyアプリ開発における Shopifyの機能活用
sonatard
4
250
RubyのWebアプリケーションを50倍速くする方法 / How to Make a Ruby Web Application 50 Times Faster
hogelog
3
950
Amplify Gen2 Deep Dive / バックエンドの型をいかにしてフロントエンドへ伝えるか #TSKaigi #TSKaigiKansai #AWSAmplifyJP
tacck
PRO
0
390
個人でもIAM Identity Centerを使おう!(アクセス管理編)
ryder472
4
230
OTelCol_TailSampling_and_SpanMetrics
gumamon
1
200
Amazon CloudWatch Network Monitor のススメ
yuki_ink
1
210
Terraform Stacks入門 #HashiTalks
msato
0
360
EventHub Startup CTO of the year 2024 ピッチ資料
eventhub
0
120
Featured
See All Featured
Facilitating Awesome Meetings
lara
50
6.1k
CoffeeScript is Beautiful & I Never Want to Write Plain JavaScript Again
sstephenson
159
15k
jQuery: Nuts, Bolts and Bling
dougneiner
61
7.5k
Speed Design
sergeychernyshev
25
620
RailsConf 2023
tenderlove
29
900
Building a Modern Day E-commerce SEO Strategy
aleyda
38
6.9k
Embracing the Ebb and Flow
colly
84
4.5k
Art, The Web, and Tiny UX
lynnandtonic
297
20k
Designing for Performance
lara
604
68k
実際に使うSQLの書き方 徹底解説 / pgcon21j-tutorial
soudai
169
50k
Ruby is Unlike a Banana
tanoku
97
11k
Bootstrapping a Software Product
garrettdimon
PRO
305
110k
Transcript
Androidテスティング実践 ①基礎編
本スライドは、NTTソフトウェア社内技術者育成研修(ソフト道場研修)テキストです。 【著作権・免責事項】 ! 本セミナーコースの内容、本資料のすべての著作権は、NTTソフトウェア株式会社に帰属します。 ! 無断での本資料の複写、複製、再利⽤、転載、転⽤を禁じます。 ! 本資料と演習等で利⽤するすべての教材は、NTTソフトウェア株式会社からの保証なしに提供されます。 ! 本書に記載されている会社名および製品名は、⼀般に各社の商標または登録商標です。
Copyright © 2016, NTT Software Corporation. 2 ˞ 演習問題に関するスライドは、⼀部を除き、本ファイルには含まれておりません。 また、演習に必要なソースコードも含まれておりません。ご了承ください。
本研修の対象者・受講条件 対象者 ! Androidアプリのユニットテスト⾃動化に興味があるが、 どこから⼿を付けて良いかわからない⽅ ! Androidのユニットテストを書き始めてみたが、様々な理由で 途中で諦めてしまった(または諦めてしまいそうな)⽅ ! Androidのシステムテスト(UI部分)の⾃動化 に踏み出してみたい⽅ 受講条件 ! Androidアプリケーション開発の⼊⾨知識、および、
Javaプログラミングの経験を有していること ! JUnitの利⽤経験があること Copyright © 2016, NTT Software Corporation. 3
本研修の講義⽬的と到達⽬標(1/3) 4 Copyright © 2016, NTT Software Corporation. Androidアプリ開発プロジェクトで •
実際の開発で無理なくユニットテストコードが書ける • システム(UI)テスト⾃動化ツールについて • 「どんな場⾯でどのツールを使えば良いか」分かる • 簡単なテストシナリオを⾃動化できる
本研修の講義⽬的と到達⽬標(2/3) 5 Copyright © 2016, NTT Software Corporation. ! 学習すること " ⾃動ユニットテストの位置付けとメリット
" Androidアプリのユニットテストの書き⽅ ! Android Studio、Robolectric、Mockitoを利⽤します ! ありがちなシーン別に演習中⼼に学習します " システムテスト⾃動化ツールの特徴と 基本的なテストスクリプトの書き⽅ ! 【座学+演習】Robotium、Espresso、UI Automator ! 【座学のみ】Appium
本研修の講義⽬的と到達⽬標(3/3) 6 Copyright © 2016, NTT Software Corporation. ! 本研修で取り上げないこと " Android標準のユニットテスト
" システムテスト⾃動化ツールの詳しい使い⽅
この研修のカバー範囲 Copyright © 2016, NTT Software Corporation. 7 ユニットテスト ⾃動化スキル
システムテスト ⾃動化スキル ⾊々なツールを広く薄く 実アプリに対するテストコードが 書けるレベルまで深く修得
本研修の講義内容 8 1⽇⽬ 2⽇⽬ 午前 9:30〜 12:00 ! Androidテスティング基礎 !
⾃動テストについての考え⽅ ! テストアーキテクチャ (演習あり) ! ユニットテストの⾃動化 ! 基本的な使い⽅ ! ビジネスロジックのテスト (演習あり) 昼休憩 12:00〜13:00 午後 13:00〜 17:30 ! システムテストの⾃動化 ! Robotium (演習あり) ! Espresso (演習あり) ! UI Automator (演習あり) ! Appium ! イベントリスナのテスト (演習のみ) ! HTTP通信を⾏うメソッド のテスト (演習のみ) ! DBアクセスするメソッドの テスト (演習のみ) ! CI ※60〜90分ごとに適宜休憩を⼊れます Copyright © 2016, NTT Software Corporation.
本研修で紹介するツール 9 ツール名 概要 JUnit4 単体テストフレームワーク Robotium 直感的に書けるのが特徴のUIテストフレームワーク Espresso White-boxテストができるUIテストフレームワーク
UI Automator アプリにまたがったテストができる UIテストフレームワーク Appium Seleniumと似たAPIを持つUIテストフレームワーク Robolectric 通常のJVM上でAndroidの単体試験を 実施するためのフレームワーク Mockito モッククラスを簡単に作成するためのライブラリ Android Studio Android向けの新しい統合開発環境 Gradle Android標準となったGroovyベースのビルドツール Copyright © 2016, NTT Software Corporation.
1. Androidテスティング基礎 ! ⾃動テストについての考え⽅ ! Androidの開発環境 ! Local Unit TestとInstrumented
Test ! JUnit4とAndroid Testing Support Library ! テスト対象アプリの紹介 10 Copyright © 2016, NTT Software Corporation.
Copyright © 2016, NTT Software Corporation. 11 ⾃動テストについての考え⽅
【考え⽅】テスト⾃動化のメリット(1/2) 1. 新版リリース時に、既存の回帰テストを⾃動実⾏できる " 間違った修正をすればテストに失敗する(デグレ防⽌) " 安⼼してソースコードの整理(リファクタリング)・改造ができる 2. テストをもっと頻繁に、たくさん実⾏できる 3. ⼿動では困難・不可能なテストができる 4.
⼈的リソースの有効活⽤ " テスト担当者はより良いテストケース設計に注⼒できる " CI (Continuous Integration) ツールと連携すれば、 ⾃動テストの定期的な実⾏ですら機械任せにできる。 Copyright © 2016, NTT Software Corporation. 12 (参考)Mark Fewster, Dorothy Graham著「システムテスト⾃動化標準ガイド」(翔泳社) 第1章
【考え⽅】テスト⾃動化のメリット(2/2) 5. テストの⼀貫性と再現性 " 同⼀のテストを異なるデバイス上で実⾏できる 6. テストの再利⽤ " 何度もテストを実⾏することで、 初期コスト(テスト設計、実装など)を分散できる 7. 市場に早く提供できる
8. ⾃信が持てる Copyright © 2016, NTT Software Corporation. 13 (参考)Mark Fewster, Dorothy Graham著「システムテスト⾃動化標準ガイド」(翔泳社) 第1章
【考え⽅】テスト⾃動化に共通する問題 1. ⾃動テストツールの採⽤で全て解決すると思ってしまう 2. ダメなテストの⾃動化してしまう " ダメなテストを⾃動化してもダメなまま 3. ⾃動テストは新しいバグを発⾒しない " ⾃動テストスクリプトを書く段階で新規バグは⾒つかる! 4.
⾃動テストを全てパスしても、バグは存在する 5. ⾃動テストのメンテナンスコストが⾼くなる " テスト対象が仕様変更する度に、テストスクリプトの修正が必要 6. ⾃動テストツールにバグがある 7. 組織のサポートが得られない " 「初回は導⼊コストが⼤きいため、ほとんど利益は得られない」 ことを上司に分かってもらう必要がある Copyright © 2016, NTT Software Corporation. 14 (参考)Mark Fewster, Dorothy Graham著「システムテスト⾃動化標準ガイド」(翔泳社) 第1章
【考え⽅】どうすれば良いのか(1/4) Copyright © 2016, NTT Software Corporation. 15 ! ⾃動化の⽬的は 効率化
! ⼿作業を繰り返すよりもコスト(稼働)が減る ! 「⾃動化」には⾃動化するための コスト がかかる ! 学習コスト ! 最初にテストコードを書くコスト ! 改造時にメンテし続けていくコスト ⾃動化すべき箇所はどこ?
【考え⽅】どうすれば良いのか(2/4) ⾃動化すべき箇所 ! テストコードが簡単に(少ない稼働で)書けるところ " イニシャルコストが少なくて済む ! 何度も繰り返しテストするところ " 繰り返すほどペイする ! 改造しても仕様があまり変わらないところ " テストコードの修正稼働が少なくて済む Copyright ©
2016, NTT Software Corporation. 16 まずはここからはじめよう
【考え⽅】どうすれば良いのか(3/4) ツール選定の考え⽅ " 「やりたいことが簡単にできるかどうか」が重要 ありがちなアンチパターン " 1つのツールで全部やろうとする " 全てのテストを⾃動化しようと頑張る おすすめ! " 複数ツールを併⽤する。 そのツールが得意なところだけ活⽤する。 テストクラス単位でのツール選択OK
" 簡単に書けるところだけ⾃動化する Copyright © 2016, NTT Software Corporation. 17
【考え⽅】どうすれば良いのか(4/4) ユニットテスト vs システム(UI)テスト ! (原則)ユニットテスト⾃動化から着⼿すべき " ソース変更の度に再テストできるので効果が⾼い " 改造時に最低限の品質が担保できる " テストを書くことで、曖昧だった仕様が明確になる (例)引数にnullを指定したらどうなるか? ! 事情によってはシステムテスト⾃動化からでもOK
" どちらに稼働がかかっているか? " 何度もやるはめになっているのはどちらか? Copyright © 2016, NTT Software Corporation. 18 全部⾃動化しようと思わないこと!
【考え⽅】ユニットテスト⾃動化で⼤事なこと(1/2) ! サクサク実⾏できること " 開発者はコードを書きながらテストも書く " テストの実⾏に時間がかかると効率が落ちてしまう ! モックライブラリが使えること " 簡単にテストを書くにはモックライブラリは必須 ! 意味のあるテストを⾃動化すること " コスト的に⾒合うか考える ! GUIや⾮同期処理など、⼤変すぎる箇所はやらない →後フェーズで⼿動でテストすれば良い
" ミスが⼊りそうな複雑なロジックのテストを優先する ! 単純なsetter/getterのテストを沢⼭書く意義は薄い 19 Copyright © 2016, NTT Software Corporation.
【考え⽅】ユニットテスト⾃動化で⼤事なこと(2/2) ! ユニットテスト⾃動化ツールは、 以下の組み合わせがおすすめ(詳細は第4章で) " Mockito: モックライブラリの定番 " Robolectric: サクサク実⾏できる! Copyright © 2016,
NTT Software Corporation. 20
【考え⽅】システムテスト⾃動化で⼤事なこと ! テストスクリプトが簡単に書けること " UIは移ろいやすい " UI変更により作り直してもダメージが少ない ! UI変更に強いテストコード設計にすること " Page Objectパターンは必須! (参考)「4時間で学ぶ、効率的な⾃動テストスクリプトのメンテナンス」 https://goo.gl/PTdOfB (テスト⾃動化研究会
チュートリアル資料) ! 簡単に⾃動化できるテスト項⽬に絞ること " テストツールによって得⼿不得⼿がある ! 各テストツールの得意な部分をつまみ喰いする " 例外: (⾃動化コスト以上に)⼿動でのテストが⾯倒な場合 Copyright © 2016, NTT Software Corporation. 21
【考え⽅】(参考)Android特有の試験観点(1/3) ! Activityのライフサイクルイベントに関する試験 " onPause()、onCreate()でのデータの永続化・復元 " 特にホームキーが押下された時の振る舞いは⾒落しがち! " 画⾯の向きが変わった時の動作 (onConfigurationChanged()) ! ネットワーク通信やDB操作などの重い処理に関する試験 " ANR (Application Not
Responding) エラーが発⽣しないか ! データベース・ファイルシステム操作に関する試験 ! UIの細かい振る舞いに関する試験 " UIコンポーネントの押下時/⾮押下時、選択時/⾮選択時の⾊ " キーによるフォーカス移動の順番 " etc. Copyright © 2016, NTT Software Corporation. 22 (参考)Diego Torres Milano著「Android Application Testing Guide」(Packt Publishing)
【考え⽅】(参考)Android特有の試験観点(2/3) ! 機種に依存する振る舞いに関する試験 " ネットワーク接続の種類・状況の違い " 画⾯密度、解像度、物理的なサイズの違い " 各種センサー(加速度センサーなど)のサポート状況の違い " ⼊⼒デバイス(キーボードなど)の違い " etc Copyright © 2016,
NTT Software Corporation. 23 (参考)Diego Torres Milano著「Android Application Testing Guide」(Packt Publishing)
【考え⽅】(参考)Android特有の試験観点(3/3) ! 公式ドキュメント: Core App Quality Guidelines http://developer.android.com/distribute/googleplay/quality/core.html " 4つの観点 (※) ! Visual
Design and User Interaction ! Functionality ! Performance and Stability ! Google Play " Test Procedure ! CR-0: 全部の画⾯やダイアログについて、実際に遷移させてみる ! CR-1: 全部の画⾯について、 ホームキーを押してから再度アプリを起動してみる ! CR-2: 全部の画⾯について、別アプリに切り替えてから、 元のアプリに戻してみる ! etc. Copyright © 2016, NTT Software Corporation. 24 ˞ 具体例は、書籍「Androidアプリテスト技法」p.197参照 http://www.amazon.co.jp/dp/4798037044
Copyright © 2016, NTT Software Corporation. 25 Androidの開発環境
Androidの新しい開発環境: Android Studio ! 概要 " 「Google I/O 2013」で発表された、 新しいAndroid向け統合開発環境 " IntelliJ IDEA
Community Editionから派⽣ ! インストール http://developer.android.com/sdk/index.html " インストーラが⽴ち上がるので、指⽰通りに進める " 「Android Studioセットアップガイド」が参考になる https://keiji.github.io/the-androidstudio-book/ 26 Copyright © 2016, NTT Software Corporation. ※Eclipse+ADTは2015年12⽉で公式サポートが打ち切られました
Android Studioの特徴 ビルド環境の⼀元化 ! GUIからもコマンドライン(Gradle)からも同⼀バイナリ を⽣成できる Mavenベースの依存関係解決システム ! ビルド設定ファイルに1⾏書くだけでOSSが利⽤できる ビルドバリアントサポート ! 機能の⼤部分は同じだが、⼀部だけ振る舞いの異なる ような、複数のアプリケーションを開発できる
Copyright © 2016, NTT Software Corporation. 27
Android Studioの動作環境 ! RAM: 最低2GB、推奨8GB ! HDD: 最低2GB、推奨4GB (Android SDK含む) ! 解像度: 最低1280×800
! Java: JDK8最新版 (JAVA_HOME環境変数) ! CPU: 以下の機能を搭載していること " Intel VT-x " Intel EM64T (Intel 64) " Execute Disable (XD) Bit 28 Copyright © 2016, NTT Software Corporation.
Android Studioの初期設定 ! プロキシ設定 " [Configure]→[Settings]→[HTTP Proxy] " C:\Users\ユーザー名\.gradle\gradle.properties ! ⽂字コード設定 " [Configure]→[Settings]→[Editor]→[File Encoding] ! 3箇所全て「UTF-8」にする
29 Copyright © 2016, NTT Software Corporation.
Android Studioでプロジェクト作成/インポート 30 新規プロジェクト作成 Eclipseのプロジェクトをインポート Copyright © 2016, NTT Software
Corporation.
ソースコードのディレクトリ構成 31 Projectの中に Module(アプリ本体)がある テストコード① プロダクトコード Moduleのビルド定義ファイル Projectのビルド定義ファイル Copyright ©
2016, NTT Software Corporation. テストコード② Android Studioの Projectビューで確認する
Android Studioで良く使うショートカット ! ⾏の補完: Ctrl+Shift+Enter ! コンテンツアシスト: Ctrl+SPC ! テストの実⾏: Ctrl+Shift+F10 ! コードフォーマット: Ctrl+Alt+L
! 選択⾏の移動: Alt+Shift+↑↓ ! 選択⾏の複製: Ctrl+D ! テストメソッドの⽣成など: Alt+Insert ! インテンション(EclipseのCtrl+1): Alt+Enter ! Find Action: Shift2回押し Copyright © 2016, NTT Software Corporation. 32 ˞ [File]>[Settings...]>[Keymap]で好みのショートカットに 変更できます。
Copyright © 2016, NTT Software Corporation. 33 Local Unit TestとInstrumented
Test
Androidが⽤意しているテストの仕組み(1/2) Local Unit Test ! JVM上(開発マシン上)で動作 ⾼速だが実環境ではない ! Android Framework APIは原則呼び出せない (Robolectricを使えば可能。2⽇⽬に説明します。)
Copyright © 2016, NTT Software Corporation. 34 local JVM (Java SE) テストコード JUnitなど Android Framework API (空実装) プロダクトコード ˞ ⽤語の定義は https://developer.android.com/training/testing/start/index.html を参考にしています
Androidが⽤意しているテストの仕組み(2/2) Instrumented Test ! Android上で動作する " 実環境で動作するが、遅い ! Android Framework API 呼び出しOK Copyright
© 2016, NTT Software Corporation. 35 (出典) https://developer.android.com/studio/test/index.html#Instrumentation
テストコードの配置 36 プロダクトコード (src/main) Copyright © 2016, NTT Software Corporation.
Instrumented Test (src/androidTest) Local Unit Test (src/test)
app/build.gradleについて dependenciesブロックの書き⽅に注意 Copyright © 2016, NTT Software Corporation. 37 dependencies
{ compile fileTree(dir: 'libs', include: ['*.jar']) compile 'commons-io:commons-io:2.5' androidTestCompile 'com.android.support.test:runner:0.5' testCompile 'org.robolectric:robolectric:3.0' } プロダクトコードで使うもの (compile) Instrumented Testで使うもの (androidTestCompile) Local Unit Testで使うもの (testCompile)
! コマンドラインからの実⾏ " Instrumented Testを実⾏する場合(端末を接続した状態で) " Local Unit Test を実⾏する場合 ! Android Studioからの実⾏ " テストしたいメソッドやクラスを選択して右クリック→[Run]
(Ctrl+Shift+F10) ※Preferences→keymap→Run context configuration テストの実⾏ 38 gradlew connectedAndroidTest gradlew test Copyright © 2016, NTT Software Corporation. テストコードが緑に なっている
Copyright © 2016, NTT Software Corporation. 39 JUnit4とAndroid Testing Support
Library
JUnit4 (1/3) ! Javaで広く使われているテストフレームワーク ! http://junit.org/ 40 public class MyJUnit4Test { @Before
public void setUp() { /* テスト開始前の処理 */ } @Test public void 何かのテストをする() { /* テスト本体 */ } @After public void tearDown() { /* テスト終了後の処理 */ } } Copyright © 2016, NTT Software Corporation.
JUnit4 (2/3) ! テスト結果が期待通りかどうかは assertThat(actual, expected) を使う 41 // この2つをstatic importしておく
import static org.hamcrest.CoreMatchers.*; import static org.junit.Assert.assertThat; ... // 使⽤例 assertThat(x, is(3)); assertThat(x, is(not(4))); assertThat(myList, hasItem("3")); ˞ 参考: マイナビニュース 『速攻解説! JUnit 4.4 - 新アサーションメソッド「assertThat」の⽤途とは』 http://news.mynavi.jp/articles/2007/07/20/junit1/ Copyright © 2016, NTT Software Corporation.
JUnit4 (3/3) ! (参考)JUnit3との違い Copyright © 2016, NTT Software Corporation. 42
JUnit3 JUnit4 テストクラス TestCaseクラスを継承 特に制限なし テストメソッ ド 「test」から始まる メソッド 「@Test」が付いているメソッド 前処理 「setUp()」を オーバーライド 「@Before」が付いているメソッド 後処理 「tearDown()」を オーバーライド 「@After」が付いているメソッド 検証 assertEquals(expected, actual) assertThat(actual, expected)
ATSL (Android Testing Support Library) ! Instrumented Testで事実上必須のライブラリ 'com.android.support.test:<ライブラリ名>:<バージョン>' Copyright ©
2016, NTT Software Corporation. 43 ライブラリ名 概要 runner 【必須】JUnit4が使えるようになる rules 【必須】JUnit4でActivityにアクセスできるようになる espresso:* Espressoが使えるようになる uiautomator:* UI Automatorが使えるようになる ! SDK Managerで以下をダウンロードしておく必要がある " Extras>Android Support Repository " Extras>Android Support Library
Copyright © 2016, NTT Software Corporation. 44 テスト対象アプリの紹介
テスト対象アプリの特徴 ! ⾜し算をするシンプルなアプリケーション ! テキストボックスの⼊⼒値を⾜し算した結果を表⽰ # ダイアログによる表⽰ # 同⼀画⾯の「結果:」欄への表⽰ ! 数字以外の⼊⼒時はエラーダイアログを表⽰ Copyright © 2016, NTT
Software Corporation. 45
テスト対象アプリの画⾯遷移(1/3) ! 「ダイアログ表⽰」ボタンを押下した場合 「ダイアログ表⽰」 ボタンを押下する AdditionViewActivity Copyright © 2016, NTT Software
Corporation. 46
テスト対象アプリの画⾯遷移(2/3) ! 「この画⾯に表⽰」ボタンを押下した場合 「この画⾯に表⽰」 ボタンを押下する 計算結果が 表⽰される Copyright © 2016, NTT
Software Corporation. 47
テスト対象アプリの画⾯遷移(3/3) ! エラー時に表⽰するダイアログ # 値1・値2のいずれかが数字以外の場合に表⽰ Copyright © 2016, NTT Software Corporation. 48
テスト対象アプリの内部仕様 ! ⼊⼒内容を確認するバリデータ: " AdditionViewActivity#isValid(String, String): boolean " 引数の両⽅がintに変換可能な場合: true " いずれかがintに変換できない場合や、nullの場合: false Copyright
© 2016, NTT Software Corporation. 49
ViewのリソースID R.id.value1 R.id.value2 R.id.result_value R.id.page_button R.id.dialog_button Copyright © 2016, NTT
Software Corporation. 50
【演習1-1】 単純なInstrumented Test ! 演習課題 ! ATSLのための設定 51 Copyright ©
2016, NTT Software Corporation.
演習課題 ! 以下の作業を通じて、単純なInstrumented Test を完成させてください " Android Studioで 演習⽤プロジェクト「system-test-exercise」を開く " ATSLを使うように、build.gradleを修正する " 以下のテストケースを作成する ! テスト対象:
AdditionViewActivity#isValid(String, String) ! テスト内容: 引数に"5", "8"を指定して呼び出した場合にtrueが返ること ! テストクラス名: SimpleInstrumentationTest ! テストメソッド名: isValid_normal() Copyright © 2016, NTT Software Corporation. 52
ATSLのための設定: build.gradle ! app/build.gradle Copyright © 2016, NTT Software Corporation. 53
android { defaultConfig { ... testInstrumentationRunner \ 'android.support.test.runner.AndroidJUnitRunner' } } dependencies { androidTestCompile \ 'com.android.support.test:runner:0.5' androidTestCompile \ 'com.android.support.test:rules:0.5' }
ATSLのための設定: テストクラス ! テストクラス(app/src/androidTest/java/配下) Copyright © 2016, NTT Software Corporation. 54
@RunWith(AndroidJUnit4.class) public class SimpleInstrumentationTest { @Rule public ActivityTestRule<AdditionViewActivity> activityTestRule = new ActivityTestRule<>( AdditionViewActivity.class ); private AdditionViewActivity activity; @Before public void setUp() throws Exception { activity = activityTestRule.getActivity(); } @Test public void isValid_normal() { ... } } ⽇本語名のテストメソッドだと メソッド指定のテスト実⾏不可 テスト対象Activity
https://www.ntts.co.jp/products/soft_dojyo/index.html