前回の記事の第二弾。Test frameworks編。
wannabe-jellyfish.hatenablog.com
というか、Android StudioでRobolectricを使えるようにする編。の備忘録。
| AndroidStudio | 1.3 | | Robolectric | 3.0 | | Android Build Tools | 22.0.1 | | com.android.tools.build:gradle | 1.2.3 |
参考にした偉大なるサイト様
- Espresso 2.0とRobolectricを併用したテスト環境の作り方 - Qiita
- 5分で AndroidStudio + Robolectric によるユニットテスト環境構築 - Qiita
Best PracticeなTest frameworks
Best Practiceで行っていることは2つ 1. viewを使わないUnitテストにはRobolectricを使おう 1. viewを使うUIテストには、Robotiumを使おう
ただ、EspressoがAndroidのTesting Libに含まれるようになったので、Robotiumの代わりにEspressoを使うのが、今のPracticeっぽい。 - Espresso 2.0 is here! “A release is never too late, nor is it too early. It… - Testing UI for a Single App | Android Developers
Robolectricを使おう
Robolectricはユニットテスト用のテストフレームワークで、JUnitでテストするかのようにJVM上で実行できる優れもの。
JVM上で動かせるのでEmulatorもいらず、簡単に早くテストを実施できるのです!
ただ、Emulatorを使わないので、View関連のテストはできないのですが、Modelやライブラリのテストには重宝します
AndroidStudioでRoboletricを使うときには、いろいろ手間がかかるよう。。。
ポイントは以下の3点
- テストケースの置き場所
- src/androidTestではなく、src/testに配置する
- build.gradleの書き方
- dependenciesに
testCompile "org.robolectric:robolectric:3.0"
を追加する - androidTestCompileではなく、testCompileであることに注意!
- Build VariantsのTest ArtifactをUnit Testsにする
- デフォルトだとAndroid Instrumentation Testsになってるので変更する
- Unit Testにしないと、AndroidStudio上で実行できない。。。
あとはこんな感じで、アサーションをつければOK!
@RunWith(RobolectricGradleTestRunner.class) @Config(constants = BuildConfig.class, sdk = Build.VERSION_CODES.KITKAT) public class ApplicationTest { @Before public void setup() { ・・・ } @Test public void testSearchByQuery() { ・・・ } }
$./gradlew test
でも実行してくれます!
「Espressoを使おう」編はまた次回!以上!