scaffolding-oracle-to-postgres-migration-test-project について
OracleからPostgreSQLへの移行作業に向け、空のxUnit統合テストプロジェクトを作成するスキルです。テストケースの作成前にOracle向けの基盤を整える開発者を対象とします。
主な機能
- 01対象プロジェクトの.NETとパッケージ版に準拠
- 02Oracle接続用xUnitプロジェクトの作成
- 03トランザクションロールバック基底クラスの追加
- 04トランザクション内のシードデータ管理
- 05ビルドによるコンパイル確認
活用シーン
- 01移行Phase 3でOracleテストプロジェクトを準備
- 02シードデータをコミットしないテストを用意
- 03テストケース追加前に基盤のコンパイルを確認
インストール
コマンドをコピーしてターミナルで実行します。
$
npx skills add https:/ / github.com/ github/ awesome-copilot --skill scaffolding-oracle-to-postgres-migration-test-projectインストール後、Claude Code で/scaffolding-oracle-to-postgres-migration-test-projectを入力して読み込まれたか確認します。
詳細
Oracle から PostgreSQL への移行に向けた統合テストプロジェクトのスキャフォールディング
単一の対象プロジェクト向けに、トランザクション管理とシードデータのインフラストラクチャを備えた、コンパイル可能で空の xUnit テストプロジェクトを作成します。テストを作成する前に、プロジェクトごとに一度実行してください。
ワークフロー
Progress:
- [ ] Step 1: Inspect the target project
- [ ] Step 2: Create the xUnit test project
- [ ] Step 3: Implement transaction-rollback base class
- [ ] Step 4: Implement seed data manager
- [ ] Step 5: Verify the project compiles
ステップ 1:対象プロジェクトを調査する
対象プロジェクトの .csproj を読み込み、.NET のバージョンと既存のパッケージ参照を確認します。これらのバージョンを正確に合わせ、アップグレードしないでください。
ステップ 2:xUnit テストプロジェクトを作成する
- テスト対象のアプリケーションと同じ .NET バージョンをターゲットにします。
- Oracle データベース接続用(
Oracle.ManagedDataAccess.Core)と xUnit の NuGet パッケージを追加します。 - 対象プロジェクトのみへのプロジェクト参照を追加します。他のアプリケーションプロジェクトは参照しないでください。
- Oracle データベース接続用に設定した
appsettings.jsonを追加します。
ステップ 3:トランザクションをロールバックする基底クラスを実装する
- 各テストの前にトランザクションを開始し、テスト後にロールバックする基底テストクラスを作成します。
- ロールバックを確実に行えるよう、すべての例外を捕捉して処理します。
- 以降のすべてのテストクラスで継承できるパターンにします。
ステップ 4:シードデータマネージャーを実装する
- トランザクションのスコープ内でテストデータを読み込む、グローバルなシードマネージャーを作成します。
- シードデータはコミットしないでください。各テスト後にトランザクションがロールバックされます。
- 既存のデータベースデータを保持するため、
TRUNCATE TABLEは使用しないでください。 - 後続のテスト作成で使用するシードファイルの配置場所について、命名規則を定めます。
ステップ 5:プロジェクトのコンパイルを確認する
テストプロジェクトをビルドし、終了前にエラーが 0 件でコンパイルできることを確認します。
主な制約
- フェーズ 3 のみ — このスキルでスキャフォールディングするのは、Oracle を対象とするテストプロジェクトです。PostgreSQL テストプロジェクト(フェーズ 6)は、このプロジェクトをコピーして移行することで作成します。その時点でこのスキルを再実行しないでください。
- Oracle は正解動作の基準となるソースです。スキャフォールディングの対象は Oracle のみとし、PostgreSQL は対象にしないでください。
- 既存の .NET および C# のバージョンを維持し、新しい言語機能やランタイム機能を導入しないでください。
- 出力するのはインフラストラクチャのみを含む空のテストプロジェクトです。テストケースは含めないでください。
コメント
Markdown 対応