mcpField
R
rust-testing

rust-testing

github.com/pproencaテスト・品質22093 回インストール11 週間前に更新
リポジトリ

rust-testing について

codex-rsのコントリビューターが用いるRustテスト規約をまとめたスキルです。モジュール、統合、イベント、スナップショットの各テストを、モック、決定性、テスト基盤の実践例とともに案内します。

主な機能

  1. 01テストファイルとアサーションの整理
  2. 02APIおよびSSEのやり取りのモック
  3. 03型付きで再利用可能なテストデータの構築
  4. 04述語マッチングによるイベントテスト
  5. 05テスト結果の決定性の維持
  6. 06スナップショットによるTUI描画の検証

活用シーン

  1. 01Rustモジュールテストの作成
  2. 02バグ修正の回帰テスト追加
  3. 03SSEモックを使ったResponses APIフローのテスト
  4. 04TUI変更のスナップショットテスト

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/pproenca/dot-skills --skill rust-testing

インストール後、Claude Code で/rust-testingを入力して読み込まれたか確認します。

同梱ファイル

SKILL.md と一緒にインストールされる参考資料やスクリプト。

AGENTS.md
metadata.json
assets/templates/
_template.md
references/
_sections.md
arch-avoid-env-mutation.md
arch-cargo-bin-resolver.md
arch-regression-per-pr.md
arch-sibling-test-files.md
arch-tempdir-isolation.md
arch-test-module-imports.md
assert-descriptive-names.md
assert-eq-over-bool.md
assert-pretty-assertions.md
assert-snapshot-ui.md
assert-whole-object.md
data-btreemap-tests.md
data-builder-pattern.md
data-minimal-fixtures.md
data-realistic-names.md
data-struct-construction.md
det-deterministic-ids.md
det-fixed-ordering.md
det-no-env-dependency.md
det-no-timing-assertions.md
det-sandbox-env-skip.md
event-function-call-output.md
event-request-helpers.md
event-structured-assertions.md
event-submit-op.md
event-wait-for-event.md

詳細

Codex-RS コントリビューター向け Rust テストのベストプラクティス

codex-rs のトップコントリビューターが確立した基準に沿って、高品質な Rust テストを書くための包括的なガイドです。このスキルでは、テストアーキテクチャ、アサーション、モックサーバー、テストデータ、イベント駆動テスト、決定性、スナップショットテスト、統合テストの基盤に関するパターンをまとめています。

適用するタイミング

  • codex-rs の Rust モジュールに新しいテストを書くとき
  • バグ修正の回帰テストを追加するとき(PR ごとに 3~6 件)
  • SSE モックを使って Responses API とやり取りする統合テストを作成するとき
  • スナップショットによるカバレッジが必要な TUI のレンダリングコードを変更するとき
  • コードベースの規約に準拠しているか、テストコードをレビューするとき

優先度別ルールカテゴリ

優先度カテゴリプレフィックスルール数主な内容
CRITICALテストアーキテクチャarch-6ファイル構成、インポート、分離
CRITICALアサーションassert-5pretty_assertions、オブジェクト全体の比較
HIGHモックサーバーmock-6wiremock、SSE ビルダー、ResponseMock
HIGHテストデータdata-5ビルダー、型付き構築、BTreeMap
MEDIUM-HIGHイベントテストevent-5submit/wait サイクル、述語による照合
MEDIUM決定性det-5安定した ID、環境の分離
MEDIUMスナップショットテストsnap-4Insta のワークフロー、バッファーのレンダリング
LOW-MEDIUM統合テストinteg-4core_test_support、Bazel との互換性

クイックリファレンス

  • テストファイルの配置: #[path = "feature_tests.rs"] を使って、同じディレクトリに _tests.rs ファイルを配置します
  • アサーション: 常に use pretty_assertions::assert_eq; を使用します
  • オブジェクトの比較: 構造体全体に対して assert_eq!(actual, expected) を使います
  • SSE のモック: responses::mount_sse_once と responses::sse(vec![ev_*(...)]) を使います
  • イベントの待機: wait_for_event(codex, |ev| predicate) を使います
  • スナップショットテスト: insta::assert_snapshot!(terminal.backend()) を使います
  • 決定性: HashMap より BTreeMap を使い、set_deterministic_process_ids を設定します
  • バイナリの解決: codex_utils_cargo_bin::cargo_bin("name") を使います
  • フィクスチャのパス: codex_utils_cargo_bin::find_resource!("path") を使います
  • サンドボックスの処理: skip_if_sandbox!()/skip_if_no_network!() を使います

使用方法

  1. CRITICAL ルール(arch、assert)から始めます。これらはすべてのテストに適用されます
  2. API モックを使った統合テストを書く場合は、HIGH ルール(mock、data)を適用します
  3. エージェントプロトコルをテストする場合は、MEDIUM-HIGH ルール(event)を適用します
  4. プロセス ID や UI のレンダリングを扱うテストでは、MEDIUM ルール(det、snap)を適用します
  5. クレート間およびビルドシステムとの互換性には、LOW-MEDIUM ルール(integ)を適用します

参照ファイル

ファイル用途
references/_sections.mdセクションの定義、順序、影響度
references/arch-*.mdテストアーキテクチャのルール(6 ファイル)
references/assert-*.mdアサーションのルール(5 ファイル)
references/mock-*.mdモックサーバーのルール(6 ファイル)
references/data-*.mdテストデータのルール(5 ファイル)
references/event-*.mdイベントテストのルール(5 ファイル)
references/det-*.md決定性のルール(5 ファイル)
references/snap-*.mdスナップショットテストのルール(4 ファイル)
references/integ-*.md統合テストのルール(4 ファイル)
assets/templates/_template.mdルールファイルのテンプレート
metadata.jsonスキルのメタデータとバージョン

コメント