- name
- dotnet-testing-advanced
- description
- .NET 進階測試技能的導航入口。當使用者詢問整合測試、API 測試、Testcontainers、Aspire 測試、測試框架遷移(xUnit v3、TUnit)等進階需求,或不確定該載入哪個 dotnet-testing-advanced 子技能時使用,依需求引導至對應的進階子技能。
# .NET 進階測試技能總覽
本檔案是「進階測試導航中心」,幫助找到正確的進階子技能。進階測試涉及容器管理、WebApplicationFactory 設定等複雜細節,子技能包含完整的設定指引和常見問題排解,載入正確的子技能能確保使用者獲得完整指引。
根據使用者需求匹配對應的進階子技能,使用 Skill tool 載入,讓子技能提供專業的整合測試指引。
---
## 快速技能對照表
**使用者提到的關鍵字 → 應載入的進階子技能**
### 整合測試技能
| 使用者說... | 載入指令 | 用途說明 |
|------------|----------|----------|
| **API 測試**、Controller 測試、端點測試 | `/skill dotnet-testing-advanced-aspnet-integration-testing` | 基礎 API 整合測試 |
| **完整 CRUD**、WebAPI 測試、業務流程測試 | `/skill dotnet-testing-advanced-webapi-integration-testing` | 完整 API 流程測試 |
| **WebApplicationFactory**、TestServer | `/skill dotnet-testing-advanced-aspnet-integration-testing` | WebApplicationFactory 使用 |
### 容器化測試技能
| 使用者說... | 載入指令 | 用途說明 |
|------------|----------|----------|
| **SQL Server 容器**、PostgreSQL、MySQL | `/skill dotnet-testing-advanced-testcontainers-database` | 關聯式資料庫容器測試 |
| **MongoDB**、Redis、Elasticsearch | `/skill dotnet-testing-advanced-testcontainers-nosql` | NoSQL 資料庫容器測試 |
| **真實資料庫**、EF Core 測試、Dapper 測試 | `/skill dotnet-testing-advanced-testcontainers-database` | 真實資料庫行為測試 |
| **Testcontainers**、容器測試、Docker 測試 | `/skill dotnet-testing-advanced-testcontainers-database` | Testcontainers 基礎 |
### 微服務測試技能
| 使用者說... | 載入指令 | 用途說明 |
|------------|----------|----------|
| **.NET Aspire**、微服務測試、分散式測試 | `/skill dotnet-testing-advanced-aspire-testing` | Aspire 微服務測試 |
| **DistributedApplication**、服務間通訊 | `/skill dotnet-testing-advanced-aspire-testing` | Aspire 應用測試 |
### 框架升級技能
| 使用者說... | 載入指令 | 用途說明 |
|------------|----------|----------|
| **xUnit 升級**、xUnit 3.x、版本升級 | `/skill dotnet-testing-advanced-xunit-upgrade-guide` | xUnit 2.x → 3.x 升級 |
| **TUnit**、新測試框架、TUnit 基礎 | `/skill dotnet-testing-advanced-tunit-fundamentals` | TUnit 基礎與遷移 |
| **TUnit 進階**、TUnit DI、平行執行 | `/skill dotnet-testing-advanced-tunit-advanced` | TUnit 進階功能 |
---
## 使用流程範例
```
使用者:請幫我建立 ProductsController 的 API 整合測試
AI:我注意到您需要進行 API 整合測試。根據快速對照表,
我應該載入 dotnet-testing-advanced-aspnet-integration-testing skill。
[使用 Skill tool 載入子技能]
AI:現在按照 ASP.NET Core Integration Testing skill 的指引為您建立測試...
```
---
## 完整技能清單
如需查看完整的 8 個進階技能清單、詳細決策樹、學習路徑建議,請繼續閱讀本檔案後續內容。
---
## 快速決策樹
根據測試情境(API 測試、真實資料庫、微服務、框架遷移)快速找到對應的進階子技能。涵蓋 4 大情境與多個選項分支。
> 詳細內容請參閱 [references/decision-tree.md](references/decision-tree.md)
---
## 技能分類地圖
8 個進階技能分為三大類:整合測試(4 個)、微服務測試(1 個)、框架遷移(3 個),包含各技能的核心價值、適合情境、學習難度與前置技能。
> 詳細內容請參閱 [references/skill-classification-map.md](references/skill-classification-map.md)
---
## 常見任務映射表
7 個常見任務的完整映射,包含情境描述、推薦技能、實施步驟、提示詞範例與預期程式碼結構。
> 詳細內容請參閱 [references/task-mapping-table.md](references/task-mapping-table.md)
---
## 整合測試層級對應
根據專案複雜度,選擇適合的測試策略:
### Level 1:簡單的 WebApi 專案
**專案特徵**:
- 簡單的 CRUD API
- 無外部依賴或使用記憶體實作
- 業務邏輯簡單
**推薦技能**:
- `dotnet-testing-advanced-aspnet-integration-testing`
**測試重點**:
- 路由驗證
- 模型綁定
- HTTP 回應
- 基本業務邏輯
**範例專案**:
- TodoList API
- 簡單的產品目錄
---
### Level 2:相依 Service 的 WebApi 專案
**專案特徵**:
- 有業務邏輯層(Services)
- 依賴外部服務(可以 Mock)
- 中等複雜度
**推薦技能組合**:
1. `dotnet-testing-advanced-aspnet-integration-testing`(基礎)
2. `dotnet-testing-nsubstitute-mocking`(模擬依賴)
**測試策略**:
- 使用 NSubstitute 建立 Service stub
- 測試 Controller 與 Service 的互動
- 驗證錯誤處理
**範例專案**:
- 電商 API(有庫存、訂單服務)
- CMS 系統
---
### Level 3:完整的 WebApi 專案
**專案特徵**:
- 複雜的業務邏輯
- 需要真實資料庫
- 可能有外部 API 整合
- 完整的錯誤處理
**推薦技能組合**:
1. `dotnet-testing-advanced-webapi-integration-testing`(完整流程)
2. `dotnet-testing-advanced-testcontainers-database`(真實資料庫)
3. `dotnet-testing-advanced-testcontainers-nosql`(如有使用 NoSQL)
**測試策略**:
- 使用 Testcontainers 建立真實資料庫
- 完整的端到端測試
- 測試資料準備與清理
- 驗證所有錯誤情境
**範例專案**:
- 大型電商平台
- 企業級管理系統
- SaaS 應用
---
## 學習路徑建議
包含整合測試入門(1 週)、微服務測試專精(3-5 天)、框架遷移路徑等完整學習計畫與每日學習重點。
> 詳細內容請參閱 [references/learning-paths.md](references/learning-paths.md)
---
## 技能組合建議
根據不同的專案需求,推薦以下技能組合:
### 組合 1:完整 API 測試專案
**適合**:建立正式專案的完整測試套件
**技能組合**:
1. `dotnet-testing-advanced-aspnet-integration-testing`(基礎)
2. `dotnet-testing-advanced-testcontainers-database`(真實資料庫)
3. `dotnet-testing-advanced-webapi-integration-testing`(完整流程)
**學習順序**:
1. 先學 aspnet-integration-testing 理解基礎
2. 再學 testcontainers-database 掌握資料庫測試
3. 最後學 webapi-integration-testing 整合應用
**預期成果**:
- 能為 Web API 專案建立完整測試
- 使用真實資料庫驗證行為
- 測試所有 CRUD 端點與錯誤處理
---
### 組合 2:微服務測試方案
**適合**:微服務架構、分散式系統
**技能組合**:
1. `dotnet-testing-advanced-aspire-testing`(核心)
2. `dotnet-testing-advanced-testcontainers-database`(資料庫)
3. `dotnet-testing-advanced-testcontainers-nosql`(NoSQL)
**學習順序**:
1. 先學 testcontainers(資料庫測試基礎)
2. 再學 aspire-testing(微服務測試)
**預期成果**:
- 測試 .NET Aspire 專案
- 驗證服務間通訊
- 使用容器化環境測試
---
### 組合 3:框架現代化
**適合**:測試框架升級或遷移
#### 選項 A:xUnit 升級
**技能**:
- `dotnet-testing-advanced-xunit-upgrade-guide`
**適合**:
- 現有專案使用 xUnit 2.x
- 想升級到最新版本
---
#### 選項 B:TUnit 遷移
**技能組合**:
1. `dotnet-testing-advanced-tunit-fundamentals`(基礎)
2. `dotnet-testing-advanced-tunit-advanced`(進階)
**適合**:
- 新專案選擇測試框架
- 考慮從 xUnit 遷移
**學習順序**:
1. 先學 fundamentals 了解基礎
2. 再學 advanced 掌握進階功能
---
## 前置技能要求
學習進階技能前,建議先掌握以下基礎技能(來自 `dotnet-testing` 基礎技能集):
### 必備技能
#### 1. dotnet-testing-unit-test-fundamentals
**為什麼必須**:
- 整合測試也遵循 3A Pattern
- FIRST 原則同樣適用
- 需要理解測試基礎概念
---
#### 2. dotnet-testing-xunit-project-setup
**為什麼必須**:
- 需要建立測試專案
- 理解專案結構
- 了解套件管理
---
#### 3. dotnet-testing-awesome-assertions-guide
**為什麼必須**:
- 整合測試需要驗證 HTTP 回應
- FluentAssertions.Web 提供強大的 API 斷言
- 提升測試可讀性
---
### 推薦技能
#### 1. dotnet-testing-nsubstitute-mocking
**為什麼推薦**:
- 整合測試中可能需要 Mock 外部服務
- WebApplicationFactory 需要替換服務
---
#### 2. dotnet-testing-autofixture-basics
**為什麼推薦**:
- 快速產生測試資料
- 減少整合測試的樣板程式碼
---
## 引導對話範例
4 個完整的對話範例,展示 AI 如何引導選擇正確技能:API 測試、微服務測試、框架升級、TUnit 評估。
> 詳細內容請參閱 [references/conversation-examples.md](references/conversation-examples.md)
---
## 與基礎技能的關係
進階技能建立在基礎技能之上:
**基礎測試能力** → `dotnet-testing`(基礎技能集)
- 單元測試基礎
- 測試資料生成
- 斷言與模擬
- 特殊場景處理
**↓ 進階應用**
**進階整合測試** → `dotnet-testing-advanced`(本技能集)
- Web API 整合測試
- 容器化測試
- 微服務測試
- 框架升級
**學習建議**:
先完成 `dotnet-testing` 基礎技能集的核心技能,再進入本進階技能集。
---
## 輸出格式
- 根據使用者需求推薦具體的進階子技能名稱與載入指令
- 提供簡短的推薦理由說明為何選擇該技能
- 若涉及多個技能組合,列出建議的學習順序
## 相關資源
### 原始資料來源
- **iThome 鐵人賽系列文章**:[老派軟體工程師的測試修練 - 30 天挑戰](https://ithelp.ithome.com.tw/users/20066083/ironman/8276)
2025 iThome 鐵人賽 Software Development 組冠軍
- **完整範例程式碼**:[30Days_in_Testing_Samples](https://github.com/kevintsengtw/30Days_in_Testing_Samples)
包含所有範例專案的可執行程式碼
### 技術需求
**整合測試技能**:
- .NET 8+
- Docker Desktop
- WSL2(Windows 環境)
**Aspire 測試技能**:
- .NET 8+
- .NET Aspire Workload
- Docker Desktop
---
## 下一步
選擇符合您需求的進階技能開始學習,或告訴我您的具體情況,我會推薦最適合的學習路徑!
**快速開始**:
- 想測試 API → 從 `dotnet-testing-advanced-aspnet-integration-testing` 開始
- 需要真實資料庫 → 從 `dotnet-testing-advanced-testcontainers-database` 開始
- 微服務專案 → 使用 `dotnet-testing-advanced-aspire-testing`
- 框架升級 → 使用對應的升級指南
- 不確定 → 告訴我您的專案情況,我會幫您分析
GitHubで見る