OSS探訪

mock・stub・verifyをKotlin DSLで記述し、coroutineやAndroid testへ広げる

スコアの見方

OSS規模スコアはStars・Watchers・Forks・Contributorsを対数圧縮して重み付けした現在の規模指標(上限なし)です。発掘スコアは現在のOSS規模スコアから発掘時点のOSS規模スコアを引いた値、更新ペースは直近30日Commit数、成長モメンタムは直近の観測期間におけるOSS規模スコア差、OSS健全度は取得できた更新状況・Community Health・Releaseの0〜100評価です。

Stars
5,760
主要言語
Kotlin
ライセンス
Apache-2.0
リポジトリ最終更新
2026/09/29
ページ内ナビ

概要

MockKはKotlin向けのmocking libraryです。mockkでtest doubleを作り、everyで返却値やbehaviorを定義し、verifyで呼び出しを検証します。coroutine向けAPI、annotation、JUnit integration、Android向けartifactも提供します。

特徴と向いている用途

公式資料に基づく紹介・実機未検証 · 内容確認日:

主な特徴

strict mockへbehaviorを定義してinteractionを検証する

mockk<T>()でmockを作成し、every { ... } returns ...でbehaviorをstubし、verify { ... }で呼び出しを確認できます。既定ではstrict mockのため未定義呼び出しを明示的に扱えます。

出典:[2]

coroutine・annotation・Android向けAPIを使う

suspend function向けにcoEveryとcoVerifyがあり、@MockK等のannotationやJUnit extensionも利用できます。Android unit/instrumented test向けには専用artifactがあります。

出典:[2]

向いている用途

Kotlinのunit testでdependency interactionを明示的に検証したい場合に向く

serviceやrepository等のcollaboratorをtest doubleへ置き換え、戻り値だけでなく呼び出し条件や回数までKotlin DSLで検証したい用途に向きます。

出典:[2]

導入前の確認

inline functionや一部JDK機能には制約がある

READMEはinline functionをmockできないこと、JDK 16+でmockkStaticやspyにaccess制約が出る場合があること、JDK 21+でdynamic agent警告が出ることを既知issueとして挙げています。

出典:[2]

spyとsuspend functionの組み合わせを避けて検証する

READMEはspyでsuspending functionを扱うと予期しない結果になる既知issueを示しています。coroutine testではmock中心の構成を優先し、該当caseはproject内で明示的にtestします。

出典:[2]

参考にした公式資料

  1. [1]mockk/mockk repository(2026-09-30)
  2. [2]MockK v1.14.11 README(2026-09-30)
  3. [3]MockK v1.14.11 gradle.properties(2026-09-30)
  4. [4]MockK v1.14.11 release(2026-09-30)
  5. [5]MockK Apache 2.0 license(2026-09-30)
編集部からの補足

MockK 1.14.11はKotlin向けmocking libraryで、mockは既定でstrictです。everyでbehaviorを定義し、verifyで呼び出しを検証できます。coroutine向けcoEvery/coVerifyやAndroid artifactもありますが、inline functionはmockできないなどの制約があります。

3ステップで試す

  1. 1

    MockK 1.14.11を追加

    Kotlin JVM test dependencyとしてstable版を追加します。Androidでは用途に応じてmockk-androidを選びます。

    testImplementation("io.mockk:mockk:1.14.11")
  2. 2

    behaviorをstub

    strict mockを作成し、testで必要な呼び出しだけbehaviorを定義します。

    val service = mockk<Service>() every { service.load() } returns "ok"
  3. 3

    呼び出しをverify

    対象methodを実行し、期待したinteractionが発生したことを確認します。

    service.load() verify { service.load() }
公式READMEで確認

成長

成長の推移 · 直近30日

5,760 Stars

推移データを蓄積中です。

Built with

カテゴリとタグ

GitHubデータ

GitHubのデータGitHubの詳細データを見る

GitHub Topics

  • argument-matchers
  • chain-calls
  • hacktoberfest
  • kotlin
  • matcher
  • mock
  • mocking-framework
  • tdd
  • testing
  • verification
Stars
5,760
Forks
420
Watchers
56
Open Issues
296
所有者種別
Organization
主要言語
Kotlin
ライセンス
Apache-2.0
リポジトリ最終更新
2026/09/29

このOSSの使い方や活用事例をMarkdownで投稿できます。管理者が承認した後に公開されます。

情報の誤りを報告

掲載内容に誤りや古い情報があればお知らせください。

このページを読んで、次に何をすればよいか分かりましたか?