20140115 potato tips no.3 android app test development driven and jenkins ci start
TRANSCRIPT
【第3回】potatotips
(iOS/Android開発Tips共有会)
Fragmentation地獄
資料削除
Androidアプリ開発のつらぽ
•端末のフラグメンテーション
•多数のバージョン
•端末メーカーの(無意味な)独自カスタマイズ
•異なるCPUアーキテクチャ
わかっていてもできないんだ・・・
TDD Boot Camp / 課題( #tddbc )
• 対象 – 飲み物自動販売機 Ver 2.0 ⇒ポテトチップス自動販売機
• 課題を解くにあたって大事な事 – 課題を全部解くのを目標するのではなく、ワークショップの学習成果を最大化するように心がけましょう!
– TDDは「きれいで動くコード」を目指します。必要に応じて各自独自にリファクタリングを心がけましょう!
– 課題の箇条書きはTDDのRED->GREENの1サイクルに対応している訳ではありません。やりやすいように仕様を整理・分割して、スモールステップで進めましょう
– オブジェクト・モジュールはこまめに分割しましょう(たとえば自販機、在庫管理、金銭管理という風に)
• 課題 – ステップ0 お金の投入と払い戻し – ステップ1 ポテチの管理 – ステップ2 購入
200円 100円
• 入金できる
• 購入できる
• おつりが取得できる
• ポテチの入庫
利用予定(?)のテスト関連クラス
• AndroidTestCase – クラスの単体テスト
• ActivityInstrumentationTestCase2 – Activityを操作するテスト
• RenamingDelegatingContext –疑似Preference DB作成
1. Context mContext =
RenamingDelegatingContext(getContext(),”test_”);
2. PreferenceManager.getDefaultSharedPreferences(mContext );
Source Code
• Target code
– https://github.com/cafedeaqua/PotatotipsVendingMachine
• Project Structure
– PotatotipsVendingMachine
• PotatotipsVendingMachineTest – In “tests” Folder
Create build.xml
• android update project --path ./ --target "android-19" --subprojects
• android update test-project --path tests --main ..
Test execute
• ant clean emma debug install
• ant -f tests/build.xml clean emma debug install test fetch-test-report
Get coverage
• tests¥bin¥coverage.html
ローカルでアプリテストを してよいのは中学生まで
Plan
android-junit-report
• libs/android-junit-report-1.5.8.jar
• custom_rules.xml
• AndroidManifext.xml
• ant.properties
On Test project
AndroidManifext.xml
custom_rules.xml
ant.properties
• test.runner=com.zutubi.android.junitreport.JUnitReportTestRunner
まとめ
• テストカバレッジ 100%は無理
–そもそも実現する必要はない
• 但し、個人開発アプリほどテスト重要
–先週の実装は他人の実装
• テストを書き始めるキッカケが重要