山下寛人オフィシャルブログ

オイシックス株式会社 執行役員 システム本部長 山下寛人の公式ブログです。

espresso2

Androidの新しいテストツールespresso2を使ってみました。もう2.2までアップデートしているようですね。エミュレータや実機で実際にアプリを動かしてテストするタイプのツールです。JUnitでテストを実行します。JUnit4対応でアノテーションで記述できます。

標準ツールになっているのでAndroid Studioで使うのはわりと簡単です。ただドキュメントはわかりづらいです。こちらの動画なら一目瞭然です。


Android Testing - Getting Started with Espresso 2.0 ...

少々うまくいかなかったところとしては、テストを動かそうとしたらLISENSE.txtが重複しているというようなエラーになりました。いろんなbuild.gradleの例を見て以下をandroid {}の中に入れてみたらうまくいきました。

    packagingOptions {
        exclude 'LICENSE.txt'
    }

コード例は以下のようになります。

@RunWith(AndroidJUnit4.class)
@LargeTest
public class MyQuizTest {
    @Rule
    public ActivityTestRule<MyQuiz> mActivityRule = new ActivityTestRule<>(MyQuiz.class);

    @Test
    public void firstView() {
        onView(withId(R.id.qText)).check(matches(withText("What is A?")));
    }

    @Test
    public void result() {
        onView(withText("A0")).perform(click());
        onView(withId(R.id.nextButton)).perform(click());
        onView(withText("B0")).perform(click());
        onView(withId(R.id.nextButton)).perform(click());
        onView(withText("C0")).perform(click());
        onView(withId(R.id.nextButton)).perform(click());
        onView(withId(R.id.resultText)).check(matches(withText("3 / 3")));
    }
}

@RuleのところでテストしたいActivityを指定し、onView()で画面上の要素を特定してperform(click())したりcheck()するというのが基本的な流れです。

このへんの指定の仕方の主なものは公式ドキュメントのcheat sheetがわかりやすいです。
EspressoV2CheatSheet - android-test-kit - Google's Testing Tools For Android - Google Project Hosting

同じwiki内にはサンプルコードもあります。

hamcrest matcherもよく併用されているようなので、知っておくとよいでしょう。AndroidとかEspresso関係なくJUnitでテストするときに使うものですね。

youtubeやコードがきれいに貼れて気持ちいいです!