OSS探訪GitHubでログイン

expect・matcher・polling expectationでSwift testの期待値を読みやすく表現する

スコアの見方

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

Stars
4,836
主要言語
Swift
ライセンス
Apache-2.0
リポジトリ最終更新
2026/05/04
ページ内ナビ

概要

NimbleはSwift/Objective-C向けmatcher frameworkです。expect(...).to(...)の形式で値比較、collection、真偽、非同期/polling expectationを表現し、XCTestやSwift Testingのtest failureを読みやすくします。

特徴と向いている用途

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

主な特徴

expectとmatcherで値・collection・条件を表現する

equal、beCloseTo、contain、beTruthyなどのmatcherを使い、期待値を自然な文に近い形で記述できます。Quickと組み合わせるほか、Nimble単体でもtest targetから利用できます。

出典:[2]

toEventuallyなどでpolling expectationを扱う

asyncに状態が変わる処理をtoEventuallyなどのpolling expectationで検証できます。14.0.0ではpolling回数を先に計算する方式へ実装が変更され、CIやparallel testingでのflakiness要因を減らすことを狙っています。

出典:[2][4]

向いている用途

XCTest/Swift Testingのassertionをdomainに近いmatcherへ置き換えたい場合に向く

値、collection、非同期状態などを再利用可能なmatcherで揃え、failure messageとtest codeの意図を読みやすくしたいSwift test suiteに適します。

出典:[2]

導入前の確認

14.0.0では同期polling APIがdeprecatedで、test target専用

Nimble 14はSwiftの同期polling expectationと同期waitUntilをdeprecatedにし、async利用へ移行する方針です。またREADMEはNimbleをunit test targetへ追加し、app binaryへ含めないよう案内しています。Package.swiftはSwift tools 6.0、iOS 13以上を宣言します。

出典:[4][2][3]

参考にした公式資料

  1. [1]Quick/Nimble — GitHub repository(2026-10-06)
  2. [2]Nimble v14.0.0 — README(2026-10-06)
  3. [3]Nimble v14.0.0 — Package.swift(2026-10-06)
  4. [4]Nimble v14.0.0 release(2026-10-06)
  5. [5]Nimble Apache-2.0 license(2026-10-06)
編集部からの補足

XCTestやSwift Testingのassertionを読みやすいmatcherへ揃えたい場合に向きます。14系では同期polling expectationが非推奨になったため、既存testはasync APIへの移行箇所を確認してください。

3ステップで試す

  1. 1

    Nimble 14.0.0をtest dependencyへ追加する

    Nimbleはunit test targetだけへ追加します。14.0.0はiOS 13以上です。

    .package(url: "https://github.com/Quick/Nimble.git", exact: "14.0.0")
  2. 2

    expectとmatcherで値を検証する

    READMEの基本形に沿って値や文字列をmatcherで検証します。

    import Nimble expect(1 + 1).to(equal(2)) expect("seahorse").to(contain("sea"))
  3. 3

    asyncな状態をpolling expectationで待つ

    14系では同期polling APIが非推奨のため、async形式のpolling expectationを使います。

    await expect { state.isReady }.toEventually(beTrue())
公式READMEで確認

成長

成長の推移 · 直近30日

4,836 Stars

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

開発アクティビティ

直近90日・週次

Commit(直近30日)
0
Open PR
10

開発アクティビティを蓄積中です。

Built with

カテゴリとタグ

GitHubデータ

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

GitHub Topics

  • matcher-functions
  • swift-generics
  • swift-assertions
  • failure-messages
  • asynchronous-expectations
  • swift
  • testing
  • operator-overloads
  • bdd
Stars
4,836
Forks
607
Watchers
85
Open Issues
20
Contributors
117
所有者種別
Organization
主要言語
Swift
ライセンス
Apache-2.0
リポジトリ最終更新
2026/05/04

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

情報の誤りを報告

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

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