Help us understand the problem. What is going on with this article?

5分で AndroidStudio + Robolectric によるユニットテスト環境構築

More than 1 year has passed since last update.

目的

  • 下記を利用したユニットテスト環境をAndroidStudioで構築する
    • 実機、エミュレータを必要とせず、高速に動作するユニットテストランナー、Robolectric
    • アノテーションが便利なユニットテストフレームワーク、JUnit4

環境

  • Android 5.0
  • AndroidStudio 1.0
  • gradle 2.2.1

手順

[PROJECT_ROOT]/build.gradle
buildscript {
    repositories {
        jcenter()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:1.0.0'
        classpath 'org.robolectric:robolectric-gradle-plugin:0.14.+'
    }
}
  • [MODULE_ROOT]/build.gradle にプラグインを適用
[MODULE_ROOT]/build.gradle
apply plugin: 'robolectric'
  • File > Project Structure > [module名] > Dependencies > +ボタン > Library Dependency で下記ライブラリを追加し、Scope を Test compile に設定
    • org.robolectric:robolectric:x.x
    • junit:junit:x.xx

dependencies.png

  • [MODULE_ROOT]/src/androidTest/java 以下に ApplicationTest.java が生成されているので動作確認として以下のように変更する
    • 現在、サポートされているAPI levelが18のため @Config(emulateSdk = 18) の記述が必要
ApplicationTest.java
@Config(emulateSdk = 18)
@RunWith(RobolectricTestRunner.class)
public class ApplicationTest {

    @Before
    public void setup() {
    }

    @After
    public void teardown() {
    }

    @Test
    public void testSample() {
        Assert.assertEquals("a", "a");
    }
}

実行

  • ターミナルで下記コマンドを実行
$ ./gradlew clean test

  • 成功時にはターミナルに下記が表示される
BUILD SUCCESSFUL

Total time: 18.146 secs
  • 失敗時には下記のような感じでレポートで作成されるので、レポートをもとに失敗の原因を解析していく
FAILURE: Build failed with an exception.

* What went wrong:
Execution failed for task ':app:testDebug'.
> There were failing tests. See the report at: file:///Users/usamao/Workspace/RobolectricSample/app/build/test-report/debug/index.html

* Try:        
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output.

BUILD FAILED
usamao
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away