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
320
ネットワークスイッチ構築実践 1.VLAN・LinkAggregation編
ntttechnocross
0
360
ネットワーク構築訓練入門
ntttechnocross
1
250
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
PHPerのための計算量入門/Complexity101 for PHPer
hanhan1978
5
140
組織に自動テストを書く文化を根付かせる戦略(2024冬版) / Building Automated Test Culture 2024 Winter Edition
twada
PRO
17
4.4k
プロダクト開発を加速させるためのQA文化の築き方 / How to build QA culture to accelerate product development
mii3king
1
270
2024年にチャレンジしたことを振り返るぞ
mitchan
0
140
Opcodeを読んでいたら何故かphp-srcを読んでいた話
murashotaro
0
260
PHPからGoへのマイグレーション for DMMアフィリエイト
yabakokobayashi
1
170
How to be an AWS Community Builder | 君もAWS Community Builderになろう!〜2024 冬 CB募集直前対策編?!〜
coosuke
PRO
2
2.8k
LINEスキマニにおけるフロントエンド開発
lycorptech_jp
PRO
0
330
TSKaigi 2024 の登壇から広がったコミュニティ活動について
tsukuha
0
160
終了の危機にあった15年続くWebサービスを全力で存続させる - phpcon2024
yositosi
15
12k
サイバー攻撃を想定したセキュリティガイドライン 策定とASM及びCNAPPの活用方法
syoshie
3
1.3k
どちらを使う?GitHub or Azure DevOps Ver. 24H2
kkamegawa
0
820
Featured
See All Featured
Speed Design
sergeychernyshev
25
670
Build your cross-platform service in a week with App Engine
jlugia
229
18k
Reflections from 52 weeks, 52 projects
jeffersonlam
347
20k
Large-scale JavaScript Application Architecture
addyosmani
510
110k
Art, The Web, and Tiny UX
lynnandtonic
298
20k
Measuring & Analyzing Core Web Vitals
bluesmoon
4
170
Designing on Purpose - Digital PM Summit 2013
jponch
116
7k
Embracing the Ebb and Flow
colly
84
4.5k
The Web Performance Landscape in 2024 [PerfNow 2024]
tammyeverts
2
290
Automating Front-end Workflow
addyosmani
1366
200k
Optimising Largest Contentful Paint
csswizardry
33
3k
Building a Scalable Design System with Sketch
lauravandoore
460
33k
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