mockKを使ったテスト実行の遅さが気になった。
そこで、自前Mock、Mockito、mockKで、以下のinterfaceのmockを生成させて、それぞれのテスト実行時間を測定してみた。
@Mockable
interface TodosRepository {
suspend fun add(todo: Todo)
suspend fun get(): Flow<List<Todo>>
suspend fun update(todo: Todo)
suspend fun remove(todo: Todo)
}
テスト実行時間の測定結果
TodosRepositoryTestが自前mockを使ったテスト。同じテストコードを5回実行している。
初回のテスト実行時間
mockK(1.8s) > Mockito(174ms) > 自前Mock(19ms)
2回目以降のテスト実行時間(平均)
mockK(34.5ms) > 自前Mock(20.25ms) > Mockito(15ms)
まとめ
- 初回のテスト実行時間は、自前Mockが一番短い。
- 2回目以降ならMockitoが一番短い
- mockKもMockitoも、2回目以降は、1回目よりも格段に実行時間は短い。