Agent skill · software engineering · affaan-m

rust-testing

単体テスト、統合テスト、非同期テスト、プロパティベーステスト、モック、カバレッジを含むRustテストパターン。TDD方法論に従う。

Why this skill is useful

Provides specific Rust testing patterns and TDD workflows that the AI wouldn't reliably generate on its own.

What it needs

About 5k tokens when loaded. Last updated 2026-08-06. 238,342 stars on the source repository.

What this skill does

Rust テストパターン TDD方法論に従って信頼性が高く保守しやすいテストを書くための包括的なRustテストパターン。 使用場面 新しいRustの関数、メソッド、またはトレイトを書く場合 既存のコードにテストカバレッジを追加する場合 パフォーマンスクリティカルなコードのベンチマークを作成する場合 入力検証にプロパティベーステストを実装する場合 RustプロジェクトでTDDワークフローに従う場合 動作原理 1. ターゲットコードを特定する — テストする関数、トレイト、またはモジュールを見つける 2. テストを書く — #[cfg(test)] モジュール内で #[test] を使用、rstest でパラメータ化テスト、または proptest でプロパティベーステスト 3. 依存関係をモックする — mockall を使用してテスト対象のユニットを分離する 4. テストを実行する (RED) — テストが期待通りに失敗することを確認する 5. 実装する (GREEN) — テストを通過するための最小限のコードを書く 6. リファクタリングする — テストを通過したまま、コードを改善する 7. カバレッジを確認する — cargo-llvm-cov を使用し、80%以上を目標にする RustのTDDワークフロー RED-GREEN-REFACTOR サイクル Rustでの段階的TDD 単体テスト モジュールレベルのテスト整理 アサーションマクロ エラーとパニックのテスト Result の戻り値のテスト パニックのテスト 統合テスト ファイル構造 統合テストの書き方 非同期テスト Tokioの使用 テスト整理パターン rstest を使用したパラメータ化テスト テストヘルパー関数 proptest を使用したプロパティベーステスト 基本的なプロパティテスト カスタムストラテジー mockall を使用したモック トレイトベースのモック ドキュメントテスト 実行可能なドキュメント /// use mycrate::add; /// /// asserteq!(add(2, 3), 5); /// asserteq!(add(-1, 1), 0); /// norun /// use mycrate::parseconfig; /// /// let config = parseconfig(r#"port = 8080"#).unwrap(); /// asserteq!(config.port, 8080); /// norun /// use mycrate::parseconfig; /// /// assert!(parseconfig("}{invalid").iserr()); /// Criterionを使用したベンチマーク テストカバレッジ カバレッジの実行 カバレッジ目標 コードの種類 目標 ----------- -------- クリティカルなビジネスロジック 100% パブリックAPI 90%以上 汎用コード 80%以上 生成済み / FFIバインディング 除外 テストコマンド ベストプラクティス すべきこと: まずテストを書く (TDD) 単体テストには #[cfg(test)] モジュールを使用する 実装ではなく動作をテストする シナリオを説明する記述的なテスト名を使用する より良いエラーメッセージのために assert! より asserteq! を優先する クリーンなエラー出力のために Result を返すテストでは ? を使用する テストを独立させる——共有の可変状態なし すべきでないこと: Result::iserr() をテストできる場合に #[shouldpanic] を使用する すべてをモックする——可能なら統合テストを優先する フレーキーなテストを無視する——修正または分離する テストで sleep() を使用する——チャンネル、バリア、または tokio::time::pause()` を使用する エラーパスのテストをスキップする CI統合 覚えておくこと:テストはドキュメントである。コードをどのように使うべきかを示している。明確に書き、最新の状態を保つこと。

How to use it

Reference it in AdaL, Claude Code, Cursor or any coding agent — nothing to install:

@skills affaan-m/rust-testing--51c2b1

View the source on GitHub

Browse the @skills marketplace