Androidアプリケーション開発の構想
Androidアプリケーションの開発をすることになりました。
ド素人ですが楽しそうです。
っていうことで開発環境の選定から行うことになりました。
テストのないコードを書けるほどアジリティなプログラミングスキルがないのでテスティングフレームワークの選定とか。
半日ほどざっくりと試したりしてみて今の構想としては次の感じです。
どれも1時間以内に使えそうって意識できたものだけが残った点が「僕のいつも通りな基準だなー」って思いました。
自動テストフレームワーク
Robotium -> エミュレーター起動UIテスト
Robolectric -> エミュレーター起動なしロジックテスト
+(Spock) -> Robolectricを使用して書けるなら使いたい
ビルドツール
Gradle -> 実質Gradleでしかやる気がない
CI
Jenkins Android Plugin -> CIサーバー確保できたら使えるようにしたい
RobotiumというのがSelenium的なものです。
RobolectricはAndroid.jar依存せずにJUnitを実行できるものです。POJO的なテストにのみ限定して使用するつもりです。
POJO的なテストをするなら最初からPOJOで書いてJUnitでやれよ。という声が出てきそうですが、Androidビギナーが短期間でアプリケーションを作ってみるにはそれは厳しいという予想に基づいてこの選択にしました。
テストコードがAndroid.jarに依存しないのであればRobolectricを使用してSpockというGroovyのテストフレームワーク(Speck系)が使えるのではないかという予想がたっていて、もし使えるなら使いたいです。
Mavenのプラグインを使用する話は聞いていないのでGradleでビルドできればいいかなーという程度に考えています。
Robotiumを実行できるのか試していないのですこし不安ですが、きっと大丈夫でしょう。
JenkinsにはAndroidのプラグインがあってエミュレーターを起動するようになっています。CIサーバーが確保できたら使用したいと思っています。
あと使うとすればFindBugsとかCheckStyleとかですが、どこまで有効なのかよくわかっていません。とりあえずいれてみるということでもいいかもしれませんね。
Android Bindingを始めとするプロダクトのフレームワークは現状では使用を考えていません。ただサーバー通信が必要になったときにSpringのお世話にはなりそうですね。
手動テスト以外をエミュレーター起動なしで行えるようにすることを強く求めて進めていきますが、手動テスト/自動テストの境界線を見つけるためにいろんなことを試していくことが必要そうですね。