dotnet-testing-test-data-builder-pattern — independently scanned and version-tracked by SaferSkills.
SaferSkills independently audited dotnet-testing-test-data-builder-pattern (Agent Skill) and scored it 100/100 (green). The audit ran 55 deterministic rules across Security, Supply Chain, Maintenance, Transparency, and Community; it found 0 high-severity and 0 lower-severity findings. The full rule-by-rule trace and per-finding evidence are below. Free, methodology-open.
Findings & checks · 0 flagged
Every scanned point with the score it earned and what moved between them.
First recorded scan — no prior version to compare against.
The primary manifest — the file an agent reads to learn what this artifact does.
Test Data Builder Pattern 是 Object Mother Pattern 的改良版,主要解決以下問題:
// ❌ 問題:過多參數設定,測試意圖不明確
var user = new User
{
Name = "John Doe", Email = "[email protected]", Age = 30,
Roles = new[] { "User" }, Settings = new UserSettings { Theme = "Dark", Language = "zh-TW" },
IsActive = true, CreatedAt = DateTime.Now, ModifiedAt = DateTime.Now
};
// ✅ 改善:意圖明確,只設定測試關注的屬性
var user = UserBuilder.AUser().WithName("John Doe").WithValidEmail().Build();一個標準的 Test Data Builder 應包含:
With* 方法鏈來設定屬性AnAdminUser()、ARegularUser())涵蓋完整 UserBuilder 實作(預設值、With* 流暢方法、語意化靜態工廠方法、Build 方法)、單一測試情境與配合 Theory 使用的範例。
完整 Builder 實作與測試使用範例請參考 references/builder-implementation.md
涵蓋五項實踐:提供合理的預設值、使用語意化命名(UserScenarios)、Builder 之間的組合(OrderBuilder 組合 UserBuilder + ProductBuilder)、避免過度複雜化、統一管理測試資料(TestData 靜態類別)。
完整最佳實踐與進階模式請參考 references/best-practices-and-patterns.md
| 特性 | Test Data Builder | Object Mother |
|---|---|---|
| 彈性 | 高度彈性,可針對測試調整 | 固定的測試資料 |
| 可讀性 | 流暢介面,意圖明確 | 需要查看方法實作 |
| 維護性 | 集中管理,易於修改 | 變更影響所有測試 |
| 使用場景 | 單元測試、情境測試 | 簡單的整合測試 |
| 特性 | Test Data Builder | AutoFixture |
|---|---|---|
| 控制度 | 完全控制物件建立 | 自動產生,控制度較低 |
| 設定複雜度 | 需手動建立 Builder | 幾乎零設定 |
| 測試意圖 | 非常明確 | 需額外說明 |
| 適用時機 | 需要精確控制的測試 | 大量資料產生、匿名測試 |
建議:Test Data Builder 和 AutoFixture 可以相輔相成。簡單情境使用 AutoFixture,複雜情境或需明確意圖時使用 Builder Pattern。
請參考 templates/ 目錄下的完整實作範例:
user-builder-example.cs - 基本 User Builder 實作advanced-builder-scenarios.cs - 進階 Builder 組合與使用情境builder-with-theory.cs - Builder 配合 xUnit Theory 的實務範例UserBuilder.cs、ProductBuilder.cs),放置於測試專案的 Builders/ 目錄With* 流暢方法、語意化靜態工廠方法與 Build() 方法TestData.cs 靜態類別集中管理常用測試資料*Tests.cs),示範 Builder 的使用方式本技能內容提煉自「老派軟體工程師的測試修練 - 30 天挑戰」系列文章:
autofixture-basics - 使用 AutoFixture 自動產生測試資料xunit-project-setup - xUnit 測試專案的基礎設定test-naming-conventions - 測試命名規範Test Data Builder Pattern 是撰寫可維護測試的重要技巧:
~30 seconds. Free. No account. Every finding cites a rule and a line of evidence.