Token导航 LogoToken导航

Agent Skill · 待分类

dotnet-testing-autofixture-basics(dotnet 测试自动夹具基础知识)

用于辅助测试设计、自动化测试、用例整理和回归验证。它适合让 Agent 编写单元测试、端到端测试、测试计划或根据失败日志定位问题。使用时需要确认项目测试框架、运行命令和夹具数据,避免为了通过测试而改坏真实逻辑;涉及浏览器或外部服务时,应区分本地模拟、测试环境和生产环境。

dotnet-testing-autofixture-basics 是待分类类 Agent Skill,可用宿主为 Codex、Claude、Cursor、Gemini CLI,通过GitHub 仓库获取,权限为需要联网;许可证为 MIT,第三方扫描已通过,按安装量在待分类类的 11,209 个 Skill 里排第 5,534。

总安装 552周安装 23GitHub Stars 24下载 184核验 2026-05-01

安装说明

本站只整理中文说明,不托管安装包,也不代用户安装。
GitHub
许可证
MIT

安装方式

通过对话安装

复制提示词发给支持本地命令或 Skills 的 AI 助手,先确认命令和权限,再让它执行。

请帮我安装这个 Agent Skill:dotnet-testing-autofixture-basics(dotnet 测试自动夹具基础知识)
来源仓库:https://github.com/kevintsengtw/dotnet-testing-agent-skills
仓库路径:skills/dotnet-testing-autofixture-basics
安装命令:
npx skills add https://github.com/kevintsengtw/dotnet-testing-agent-skills --skill dotnet-testing-autofixture-basics
安装前请先检查当前环境是否支持对应 CLI,并向我确认将要执行的命令、安装目录、联网范围和文件读写权限;确认后再执行。

命令行安装

复制命令到本机终端执行。不同来源提供的安装方式可能略有差异;本站展示可直接复制的安装命令,安装前请核对来源页面。

skills.shnpx skills
npx skills add https://github.com/kevintsengtw/dotnet-testing-agent-skills --skill dotnet-testing-autofixture-basics

这个 Skill 是做什么的

这个 Skill 的分类还没最终确定,用法以来源仓库的说明为准。

dotnet-testing-autofixture-basics 讲解 AutoFixture 核心 API:Create、Build 与 OmitAutoProperties。支持基本类型填充、嵌套对象构建及集合生成(默认 3 个元素)。适用于单元测试中快速建立被测对象依赖图,提升测试初始化效率。

需引入 AutoFixture 与 AutoFixture.Xunit2 两个 NuGet 包。建议结合 With/Without 方法精确控制关键字段,保持测试意图清晰。

来源仓库内路径:skills/dotnet-testing-autofixture-basics

上手步骤

4 步
  1. 1

    确认自己的宿主工具

    公开资料标注支持 Codex、Claude、Cursor、Gemini CLI;先确认自己用的是其中之一,再按对应工具的 Skills 目录放置。

  2. 2

    拿到安装命令

    可以直接复制的命令是 npx skills add https://github.com/kevintsengtw/dotnet-testing-agent-skills --ski…;命令里的占位符换成自己的路径或密钥再执行。

  3. 3

    安装后重启宿主

    命令执行完要完全退出宿主工具再打开,让新装的 Skill 被重新扫描到,否则列表里可能看不到。

  4. 4

    按最小权限试用

    它需要需要联网,先在测试目录或测试账号里跑,确认没问题再放到正式项目。

常见问题

6 条

dotnet-testing-autofixture-basics 怎么安装?

在终端执行 npx skills add https://github.com/kevintsengtw/dotnet-testing-agent-skills --skill dotnet-…。装完完全退出宿主工具再打开,让它重新扫描本地 Skill。

dotnet-testing-autofixture-basics 支持哪些 AI 工具?

公开资料标注支持 Codex、Claude、Cursor、Gemini CLI。其他工具只要能读取本地 Skill 目录,一般也能手动放进去,但要自己确认触发方式是否一致。

dotnet-testing-autofixture-basics 需要什么权限?

权限级别是需要联网。该 Skill 可能需要联网访问来源站点、仓库或外部 API;具体网络访问范围需要结合源码和 README 复核。

dotnet-testing-autofixture-basics 是免费的吗?

来源标注的许可证是 MIT。本站不代收任何费用,也不托管安装包;能否商用、要不要署名,以许可证原文为准。

dotnet-testing-autofixture-basics 用的人多吗?

公开数据是累计安装 552 次,近一周安装 23 次,下载 184 次,GitHub 24 星。这些数字来自第三方目录统计,只能当作热度参考,不代表质量或安全性。

dotnet-testing-autofixture-basics 安全吗?

第三方扫描结果为通过,但这只覆盖已知的静态检查项,不能替代自己读一遍源码和安装命令。

值得选的地方和要先想清楚的地方

值得选的地方

  • 同时适配 4 种工具,换客户端不用重新找替代品。
  • 3 个目录同时收录,说明这个 Skill 流传比较广。
  • 许可证明确为 MIT,商用和分发边界好判断。
  • 第三方扫描已通过,常见的高风险行为没有命中。

先想清楚的地方

  • 第三方目录整理,版本更新和行为细节以来源仓库为准。

适不适合你

更适合

  • 已经在用 Codex,想直接扩展它能力的人。
  • 需要处理待分类类任务、又不想每次都手写提示词的人。
  • 需要许可证清楚、并且有第三方扫描结果的团队项目。

不太适合

  • 需要厂商级技术支持和 SLA 的生产系统。

待分类类 Skill 对比

6 个同类
Skill总安装GitHub 星权限许可证扫描
infsh-cli

infsh CLI · Codex、Claude

4,374,576382权限未标注未明确未收录
ai-video-generation

AI 视频生成 · Codex、Claude

4,313,376382调用外部服务未明确有提醒
lark-openapi-explorer

云雀 OpenAPI 浏览器 · Codex、Claude

2,064,1209,011需要联网未明确有提醒
lark-workflow-standup-report

Lark 工作流程站立报告 · Codex、Claude

2,041,6328,978需要联网未明确通过
use-my-browser

使用我的浏览器 · Codex、Claude

1,848,49140操作浏览器未明确未通过
dotnet-testing-autofixture-basics

dotnet 测试自动夹具基础知识 · 本页

55224需要联网MIT通过

按安装量取同分类前几名;数字来自第三方目录统计,只作热度参考,不代表质量结论。

SKILL.md 原文

AutoFixture 基礎:自動產生測試資料

安裝套件

<PackageReference Include="AutoFixture" Version="4.18.1" />
<PackageReference Include="AutoFixture.Xunit2" Version="4.18.1" />

或透過命令列安裝:

dotnet add package AutoFixture
dotnet add package AutoFixture.Xunit2

核心 API 摘要

API用途預設行為
fixture.Create<T>()產生單一物件自動填充所有屬性
fixture.CreateMany<T>()產生集合預設 3 個元素
fixture.Build<T>()精確控制屬性搭配 With/Without
OmitAutoProperties()只設定必要屬性其餘保持預設值

基本使用

Fixture 是核心類別,提供自動產生測試資料的能力:

  • 基本型別:int(隨機正整數)、string(GUID 格式)、decimal、bool、DateTime、Guid
  • 複雜物件:自動建構巢狀物件與集合屬性,所有層級的屬性都會自動填入值
  • 集合產生:CreateMany<T>() 預設產生 3 個元素,可指定數量如 CreateMany<T>(10)
完整程式碼範例請參考 references/basic-usage-examples.md

Build() 精確控制

當需要對特定屬性進行控制時,使用 Build<T>() 模式:

方法用途範例
.With(prop, value)指定固定值.With(x => x.Name, "測試客戶")
.With(prop, factory)使用工廠方法產生值.With(x => x.Price, () => random.Next())
.Without(prop)排除屬性,保持預設值.Without(x => x.InternalId)
.OmitAutoProperties()不自動設定任何屬性只設定關心的屬性

循環參考處理

當物件包含循環參考時(如 Category 的 Parent 屬性指向自己),AutoFixture 預設會拋出 ObjectCreationException。

解決方案: 使用 OmitOnRecursionBehavior,移除預設的 ThrowingRecursionBehavior 並加入忽略循環參考的行為。

建議: 建立 AutoFixtureTestBase 基底類別統一處理循環參考,避免在每個測試中重複設定。

完整程式碼範例請參考 references/build-and-customization.md

xUnit 整合

Fixture 共享客製化

在測試類別建構函式中使用 Customize<T>() 設定共用的資料產生規則,所有測試方法共享同一個 Fixture 設定。

結合 Theory 測試

搭配 [Theory] + [InlineData],使用 Build<T>().With() 針對不同輸入情境設定關鍵屬性值,驗證各情境的預期行為。

匿名測試原則

測試應該關注「行為」而不是「資料」:

  • 好的做法: 使用 fixture.Create<T>() 產生任意有效資料,驗證操作結果
  • 避免: 依賴隨機產生值的具體內容(如假設年齡大於 18)
  • 正確: 使用 Build<T>().With() 明確設定影響測試結果的關鍵值
完整程式碼範例請參考 references/xunit-integration-examples.md

進化比較:Test Data Builder vs AutoFixture

層面Test Data BuilderAutoFixture
程式碼行數40+ 行 Builder + 測試5 行測試
維護成本物件改變需更新 Builder自動適應變化
開發時間先寫 Builder 再寫測試直接寫測試
大量資料需要迴圈CreateMany(100)
可讀性業務語意明確需理解 AutoFixture
完整比較程式碼與混合策略請參考 references/xunit-integration-examples.md

混合策略建議

結合 Test Data Builder 與 AutoFixture 的優點:

  • 使用 AutoFixture 建立基礎資料,再用 Builder 加工
  • 使用 TestDataFactory 封裝常用的資料產生模式
  • 大量隨機資料產生使用 CreateMany<T>(count)
完整比較程式碼與混合策略請參考 references/xunit-integration-examples.md

實務應用場景

AutoFixture 在實務中常用於以下場景:

  • Entity 測試:搭配 Theory 驗證不同輸入場景
  • DTO 驗證:使用 Build<T>() 產生符合驗證規則的資料
  • 大量資料測試:使用 CreateMany() 產生批次資料
  • 服務層測試:搭配 NSubstitute 自動產生 Mock 參數
完整程式碼範例請參閱 references/practical-scenarios.md

常見問題

Q1: 何時該用 AutoFixture,何時該用固定值?

  • 用 AutoFixture:不影響測試結果的「填充」資料,如使用者的 Email、地址等
  • 用固定值:影響測試邏輯的「關鍵」資料,如折扣計算中的客戶類型、年齡驗證中的年齡值

Q2: CreateMany 預設產生幾個?如何調整?

預設產生 3 個元素,可透過參數指定數量:fixture.CreateMany<T>(10)。若要全域調整,使用 fixture.RepeatCount = 5。

Q3: AutoFixture 產生的字串格式不符合需求?

使用 Build<T>().With() 指定格式,或搭配 Customize<T>() 設定全域規則。若需要真實感資料,考慮整合 Bogus。

最佳實踐

應該做

  1. 使用匿名測試概念 — 專注於測試邏輯而非具體資料
  2. 只在必要時固定特定值 — 使用 Build<T>().With() 設定關鍵屬性
  3. 建立共用基底類別 — 統一處理循環參考等共同配置
  4. 合理的集合大小 — 根據測試目的調整 CreateMany() 數量

應該避免

  1. 過度依賴隨機值 — 不要假設隨機值的具體內容
  2. 忽略邊界值 — 仍需要明確測試邊界情況
  3. 濫用自動產生 — 簡單測試可能用固定值更清楚

程式碼範本

請參考 templates 資料夾中的範例檔案:

輸出格式

  • 產生使用 AutoFixture 的測試類別(.cs 檔案)
  • 包含 Fixture.Create/CreateMany/Build 用法範例
  • 提供.csproj 套件參考(AutoFixture、AutoFixture.Xunit2)
  • 包含循環參考處理與自訂行為設定

參考資源

原始文章

  • Day 10 - AutoFixture 基礎:自動產生測試資料

- 鐵人賽文章:https://ithelp.ithome.com.tw/articles/10375018 - 範例程式碼:https://github.com/kevintsengtw/30Days_in_Testing_Samples/tree/main/day10

官方文件

相關技能

  • dotnet-testing-autofixture-customization - AutoFixture 進階自訂
  • dotnet-testing-autofixture-bogus-integration - AutoFixture + Bogus 整合
  • dotnet-testing-autofixture-nsubstitute-integration - AutoFixture + NSubstitute 整合
  • dotnet-testing-autodata-xunit-integration - AutoData 與 xUnit 整合
  • dotnet-testing-test-data-builder-pattern - Test Data Builder Pattern

平台分布

Claude Code

28.68%
按下载量换算53

Gemini CLI

24.41%
按下载量换算45

Antigravity

16.68%
按下载量换算31

OpenCode

12.67%
按下载量换算23

windsurf

8.75%
按下载量换算16

github-copilot

3.53%
按下载量换算6

安全审计

Gen Agent Trust Hub

通过

Socket

通过

Snyk

通过

权限和风险

需要联网

该 Skill 可能需要联网访问来源站点、仓库或外部 API;具体网络访问范围需要结合源码和 README 复核。

安装前确认

本站仅展示第三方公开信息,不托管安装包,不提供自动安装或运行环境。安装前应自行审查源码、依赖和命令行为。

继续浏览同类 Skills