Spek(Android)入門


はじめに

AndroidのUnitTestでSpekが流行しているので(今更ですが)、導入からはじめてみました。

この記事では、公式ドキュメントを元にAndroidプロジェクトのセットアップから
UnitTestの実行までを記載します。

そもそも、Spekとは?何が便利か?についてはこのあたりの記事やDroidKaigiでもよく紹介されているので、
そちらを閲覧してみてください。
https://qiita.com/k_keisuke/items/815ced486e8cdff8670d
https://qiita.com/sadashi/items/a5b93c9fc06e084456d2

導入

1.JUnit5を実行するため、サードパーティのライブラリを導入。

プロジェクト自体はAndroidStudio標準のFragment + ViewModel で作成しました。

https://github.com/mannodermaus/android-junit5 のページに記載されている
gradleの設定をします。

2.Android modules の設定

setup

spek_version の変数やその他の設定はgradle.propertiesに記載します。
(うまく行かない部分は 公式のandroid sampleを参考にしました。 )

ここまで行けばSpekのビルドが通ります。

3.SpekのUnitTest

最終形はこのように書いてみました。

object ExampleSpekUnitTest: Spek({

    describe("A Calculator") {
        val calculator by memoized { Calculator() }

        it("should return 4") {
            assertEquals(4, calculator.add(2, 2))
        }

        it("should return 10") {
            assertEquals(10, calculator.add(5, 5))
        }

        it("should return 12") {
            assertEquals(12, calculator.add(6, 6))
        }
    }

    describe("view model verify") {
        val viewModel by memoized { MainViewModel() }

        it("should return text MainViewModel") {
            assertEquals("MainViewModel", viewModel.getText())
        }
    }
})

Spekは gradlew test でも実行できますが、
https://www.spekframework.org/running/ に記載されているPluginを導入すると
JUnitと同様に右クリックで実行できるので便利です。

実行後

実行が階層形式で表現されたり、実行順序が維持されることが見えていい感じです!

まとめ

一度Spekの導入を行ったときに導入に手間取ったので、復習や今後を含めて記載してみました。
仕様のように記載できるテストはよりテストの価値が生まれるので、今後はどんどん使ってみます!