ApexBlueprint ガイド
ApexBlueprint は、結合テストで「親子のレコード群を依存順に組み立てて DML 挿入する」ためのデータ生成 OSS です。Setup (事前準備・インストール)、プロダクションコードでの使い方を解説する 使い方ガイド、各クラスの API を網羅する API リファレンス、設計の動機を掘り下げる Deep Dives の 4 段構えで構成しています。
Setup
ApexBlueprint を最初に組織へインストールするまでの導線を、環境セットアップから順に解説します。
使い方ガイド
SBlueprint と SOrchestrator を結合テストで使う典型シナリオを、単一レコード → 実行エンジン → 親子・量産・参照の応用、という流れで解説します。
SBlueprint で単一レコードを宣言する
ApexBlueprint で結合テストデータを組み立てるためのコア API、SBlueprint の基本 5 メソッド (of / set / template / alias / use) を「最終状態を宣言する」という考え方とともに解説します。
SOrchestrator で依存解決と実 DML 挿入
SBlueprint で組み立てた設計図を実レコードに変換する SOrchestrator の 4 メソッド (start / add / create / getByAlias) と、トポロジカルソート / 循環依存 / alias 重複などのハマりどころを解説します。
親子・量産・参照のパターン
単一レコードの宣言から一歩進めた応用パターン。withChildren のネスト、times + {#} での量産、use の offset 指定、{P0} / {P1} での真の親解決、parentIdField による曖昧解消までを実例で解説します。
API リファレンス
クラスごとに全 API をシグネチャ付きで網羅した詳細リファレンスです。
SBlueprint
SBlueprint メソッドチェーンの全 API を網羅。ファクトリ / 値設定 / alias / use / times / withChildren / parentIdField と、{#} / {A} / {a} / {P0}〜{Pn} のプレースホルダ仕様を一通り整理します。
SOrchestrator
SOrchestrator の全 API を網羅。ファクトリ (MockDmlOperator 注入) / add / create / getByAlias と、循環依存 / alias 重複 / 不正参照 / 複数 lookup の曖昧の各例外を整理します。
SPersona
System.runAs で使う制限ユーザー (ペルソナ) を生成するビルダー。Profile / PermissionSet の割り当て、UUID による Username、mixed DML の回避、owner / sharedWith と組んだ敵対的データの宣言まで。
Deep Dives
ApexBlueprint がなぜこの形に落ち着いたかを掘り下げる読みものです。
Declarative Data Specification: なぜ blueprint 形式か
TestDataFactory パターンの構造的な疲弊 (ID バケツリレー / メソッド増殖 / 最終状態が読めない / 冗長レコード) を出発点に、「データの最終状態を宣言する」形式への転換と、Salesforce で特にこれが効く理由を掘り下げる Deep Dive。
依存解決の仕組み: トポロジカルソート + alias 解決
SOrchestrator.create() の内部処理を 6 つのフェーズに分解。循環依存検出 / 自動 alias / {P0} {P1} の階層スタック解決が、なぜ 1 つのパイプラインに統合できているかを内部構造から解説する Deep Dive。
次に読む
- テスト戦略: Handler 結合テストで
SBlueprint/SOrchestratorを使う位置づけ - Apex Stem 導入ガイド: 動くコード付きの 4 ステップ
- ApexBlueprint の GitHub リポジトリ: ソースコードと最新情報