kevintsengtw

dotnet-testing

.NET 測試基礎技能總覽與引導中心。當使用者詢問「如何寫 .NET 測試」、「.NET 測試入門」、「需要哪些測試工具」、「測試最佳實踐」、「從零開始學測試」等一般性測試需求時觸發。會根據具體需求推薦適合的子技能組合,涵蓋測試基礎、測試資料、斷言、模擬、特殊場景等 19 個基礎技能。 Keywords: dotnet testing, .NET 測試, 測試入門, 如何寫測試, 測試最佳實踐, unit test, 單元測試, xunit, 3A pattern, FIRST 原則, assertion, 斷言, mock, stub, NSubstitute, test data, AutoFixture, Bogus, validator, FluentValidation, TimeProvider, IFileSystem, code coverage, ITestOutputHelper, test naming

kevintsengtw 25 4 Updated 3mo ago

Resources

1
GitHub

Install

npx skillscat add kevintsengtw/dotnet-testing-agent-skills/dotnet-testing

Install via the SkillsCat registry.

SKILL.md

.NET 測試基礎技能總覽


🤖 AI Agent 重要提示

當您(AI Agent)被載入此入口 skill 時,請先閱讀以下指引

📋 本技能的定位

本檔案是「導航中心」,用於幫助找到正確的子技能

您的任務是

  1. ✅ 根據使用者需求匹配對應的子技能
  2. ✅ 使用 Skill tool 載入具體的子技能
  3. ✅ 讓子技能提供專業的測試指引

禁止行為

  • ❌ 不要在本入口 skill 中直接提供測試程式碼
  • ❌ 不要在沒有載入子技能的情況下開始實作測試
  • ❌ 不要跳過子技能直接提供「一般性」測試建議

🎯 快速技能對照表(AI Agent 必讀)

使用者提到的關鍵字 → 應載入的子技能

最常用技能(必須熟記)

使用者說... 載入指令 用途說明
Validator、驗證器、CreateUserValidator /skill dotnet-testing-fluentvalidation-testing FluentValidation 測試
Mock、模擬、IRepository、IService /skill dotnet-testing-nsubstitute-mocking 模擬外部依賴
AutoFixture、測試資料生成 /skill dotnet-testing-autofixture-basics 自動產生測試資料
斷言、Should()、BeEquivalentTo /skill dotnet-testing-awesome-assertions-guide 流暢斷言(必學)
DateTime、時間測試、TimeProvider /skill dotnet-testing-datetime-testing-timeprovider 時間相關測試
File、檔案系統、IFileSystem /skill dotnet-testing-filesystem-testing-abstractions 檔案系統測試
Bogus、假資料、Faker /skill dotnet-testing-bogus-fake-data 擬真資料生成
Builder Pattern、WithXxx /skill dotnet-testing-test-data-builder-pattern Test Data Builder
深層比對、DTO 比對、Excluding /skill dotnet-testing-complex-object-comparison 複雜物件比對

基礎入門技能

使用者說... 載入指令 用途說明
從零開始、測試基礎、FIRST 原則 /skill dotnet-testing-unit-test-fundamentals 單元測試基礎
測試命名、如何命名測試 /skill dotnet-testing-test-naming-conventions 命名規範
建立測試專案、xUnit 設定 /skill dotnet-testing-xunit-project-setup 專案建置

進階技能組合

使用者說... 載入指令 用途說明
AutoFixture + Bogus /skill dotnet-testing-autofixture-bogus-integration 自動化+擬真資料
AutoFixture + NSubstitute /skill dotnet-testing-autofixture-nsubstitute-integration 自動建立 Mock
AutoData、Theory 測試 /skill dotnet-testing-autodata-xunit-integration 參數化測試
測試輸出、ITestOutputHelper /skill dotnet-testing-test-output-logging 測試日誌
覆蓋率、Coverlet /skill dotnet-testing-code-coverage-analysis 程式碼覆蓋率

⚠️ 使用流程範例

✅ 正確流程

使用者:請幫我建立 CreateUserValidator 的測試

AI:我注意到您需要測試 Validator。根據快速對照表,
    我應該載入 dotnet-testing-fluentvalidation-testing skill。

    [使用 Skill tool 載入子技能]

AI:現在按照 FluentValidation Testing skill 的指引為您建立測試...

❌ 錯誤流程

使用者:請幫我建立 CreateUserValidator 的測試

AI:好的,我來寫測試...(直接開始寫程式碼,沒有載入子技能)

📚 完整技能清單

如需查看完整的 19 個基礎技能清單、詳細決策樹、學習路徑建議,請繼續閱讀本檔案後續內容。

人類開發者參考:如需快速查找,請查看 SKILLS_QUICK_INDEX.md


適用情境

當您遇到以下情況時,我會協助您找到正確的技能:

  • 剛開始學習 .NET 測試,不知從何下手
  • 想為現有專案建立測試,需要完整指引
  • 需要改善測試品質,尋找最佳實踐
  • 遇到特定測試場景,不確定該用哪個工具
  • 想了解測試資料生成、斷言、模擬等技術
  • 希望提升測試可讀性與維護性
  • 需要處理時間、檔案系統等特殊測試場景

快速決策樹

我應該從哪裡開始?

情境 1:完全新手,從未寫過測試

推薦學習路徑

  1. dotnet-testing-unit-test-fundamentals - 理解 FIRST 原則與 3A Pattern
  2. dotnet-testing-test-naming-conventions - 學習命名規範
  3. dotnet-testing-xunit-project-setup - 建立第一個測試專案

為什麼這樣學

  • FIRST 原則是所有測試的基礎,先建立正確的觀念
  • 命名規範讓測試易讀易維護
  • 實際動手建立專案,將理論轉化為實踐

情境 2:會寫基礎測試,但測試資料準備很麻煩

推薦技能(擇一或組合)

選項 A - 自動化優先
dotnet-testing-autofixture-basics
適合:需要大量測試資料、減少樣板程式碼

選項 B - 擬真資料優先
dotnet-testing-bogus-fake-data
適合:需要真實感的測試資料(姓名、地址、Email 等)

選項 C - 語意清晰優先
dotnet-testing-test-data-builder-pattern
適合:需要高可讀性、明確表達測試意圖

選項 D - 兩者兼具
dotnet-testing-autofixture-basics + dotnet-testing-autofixture-bogus-integration
適合:同時需要自動化和擬真資料


情境 3:有外部依賴(資料庫、API、第三方服務)需要模擬

推薦技能組合

  1. dotnet-testing-nsubstitute-mocking - NSubstitute Mock 框架基礎
  2. dotnet-testing-autofixture-nsubstitute-integration - (可選)整合 AutoFixture 與 NSubstitute

何時需要第二個技能

  • 如果您已經在使用 AutoFixture 產生測試資料
  • 想要自動建立 Mock 物件,減少手動設定

情境 4:測試中有特殊場景

時間相關測試
dotnet-testing-datetime-testing-timeprovider
處理:DateTime.Now、時區轉換、時間計算

檔案系統測試
dotnet-testing-filesystem-testing-abstractions
處理:檔案讀寫、目錄操作、路徑處理

私有/內部成員測試
dotnet-testing-private-internal-testing
處理:需要測試 private、internal 成員(但應謹慎使用)


情境 5:需要更好的斷言方式

基礎需求 - 流暢斷言
dotnet-testing-awesome-assertions-guide
所有專案都應該使用,提升測試可讀性

進階需求 - 複雜物件比較
dotnet-testing-complex-object-comparison
處理:深層物件比較、DTO 驗證、Entity 比對

驗證規則測試
dotnet-testing-fluentvalidation-testing
處理:測試 FluentValidation 驗證器


情境 6:想了解測試覆蓋率

dotnet-testing-code-coverage-analysis
學習:使用 Coverlet 分析程式碼覆蓋率、產生報告

技能分類地圖

將 19 個基礎技能分為 7 大類別(測試基礎、測試資料生成、測試替身、斷言驗證、特殊場景、測試度量、框架整合),每類包含技能對照表、學習路徑與程式碼範例。

📖 詳細內容請參閱 references/skill-classification-map.md

常見任務映射表

提供 7 個常見測試任務(從零建專案、服務依賴測試、時間邏輯測試等)的技能組合推薦、實施步驟與提示詞範例。

📖 詳細內容請參閱 references/task-mapping-table.md

學習路徑建議

規劃新手路徑(1-2 週)與進階路徑(2-3 週)的每日學習計畫,包含技能、學習重點與實作練習。

📖 詳細內容請參閱 references/learning-paths.md

引導對話範例

展示 AI 如何與您互動,幫助您選擇正確的技能,包含新手入門、處理依賴、特定問題、改善測試等 4 個常見對話場景。

📖 詳細內容請參閱 references/conversation-examples.md

與進階技能的關係

完成基礎技能後,如果您需要進行整合測試、API 測試、容器化測試或微服務測試,請參考:

進階整合測試dotnet-testing-advanced

  • ASP.NET Core 整合測試
  • 容器化測試(Testcontainers)
  • 微服務測試(.NET Aspire)
  • 測試框架升級與遷移

相關資源

原始資料來源

學習文檔

本技能集基於以下完整教材提煉而成:

  • Agent Skills:從架構設計到實戰應用 (docs/Agent_Skills_Mastery.pdf)
    完整涵蓋 Agent Skills 從理論到實踐

  • Claude Code Skills: 讓 AI 變身專業工匠 (docs/Agent_Skills_Architecture.pdf)
    深入解析 Agent Skills 的架構設計

  • .NET Testing:寫得更好、跑得更快 (docs/NET_Testing_Write_Better_Run_Faster.pdf)
    測試執行優化與除錯技巧

下一步

選擇符合您需求的技能開始學習,或告訴我您的具體情況,我會推薦最適合的學習路徑!

快速開始

  • 新手 → 從 dotnet-testing-unit-test-fundamentals 開始
  • 有經驗 → 告訴我您遇到的具體問題
  • 不確定 → 告訴我您的專案情況,我會幫您分析