skills/generate-unit-test/SKILL.md
針對指定的 C# 類別或方法,自動產生 NUnit 單元測試骨架,包含 Arrange/Act/Assert 結構與 NSubstitute Mock 設定。
npx skillsauth add CloudyWing/ai-dotfiles generate-unit-testInstall this skill globally with one command. Works with Claude Code, Cursor, and Windsurf.
3 of 9 scanners reported clean
Some scanners were skipped, did not run, or reported a non-clean status. Review each row below.
依 csharp-nunit skill 規範,為指定的 C# 類別或方法產生完整的測試骨架。
/generate-unit-test [類別名稱或 .cs 檔案路徑]
若未傳入參數,詢問使用者要測試哪個類別。
讀取指定的 .cs 檔案,識別:
public 方法(包含方法簽名、參數類型、回傳類型)async 方法IDisposable掃描以下位置,找到對應的測試專案:
*.Tests/*.csprojtests/**/*.csproj[ProjectName].Tests/若找不到,詢問使用者測試專案路徑;若不存在,告知需先建立測試專案。
確認測試專案有引用以下 NuGet 套件:
NUnitNUnit3TestAdapterNSubstituteMicrosoft.NET.Test.Sdk依照以下規範產生:
using NSubstitute;
using NUnit.Framework;
namespace [對應的測試命名空間];
[TestFixture]
public class [ClassName]Tests
{
private [ClassName] sut;
private [IDependency1] dependency1;
// ... 其餘相依性
[SetUp]
public void SetUp()
{
dependency1 = Substitute.For<[IDependency1]>();
// ... 建立其餘 Mock
sut = new [ClassName](dependency1);
}
[Test]
public void [MethodName]_[Scenario]_[ExpectedBehavior]()
{
// Arrange
// TODO: 設定輸入與 Mock 行為
// Act
var result = sut.[MethodName]();
// Assert
Assert.That(result, Is.Not.Null);
}
// 非同步方法範本
[Test]
public async Task [AsyncMethodName]_[Scenario]_[ExpectedBehavior]()
{
// Arrange
// Act
var result = await sut.[AsyncMethodName]();
// Assert
}
}
命名規則:
[方法名稱]_[情境]_[預期結果](底線分隔三段式)。[被測試類別名稱]Tests。.Tests 後綴。方法骨架生成原則:
public 方法至少生成一個 Happy Path 測試方法。null 檢查),額外生成一個 Exception 測試。TODO 需標示測試意圖,不留空白的 AAA 區塊。測試檔案路徑遵循以下慣例:
src/MyProject/Services/UserService.cstests/MyProject.Tests/Services/UserServiceTests.cs目錄不存在時自動建立。
若測試檔案已存在:
[TestFixture] 類別末尾。若不存在,建立完整的新測試檔。
輸出:
tools
產生或補齊 .gitattributes,統一行尾處理、二進位識別與 lock files 標記,保留既有自訂偏好。
development
產生或補齊前端 Lint 設定(Prettier + ESLint Flat Config),統一格式化與程式碼品質規則,保留既有自訂偏好。
testing
依據事實校閱報告修改技術文件:以事實層為不可違反的約束,由改檔者負責表達層的措辭與行文連貫。Use when the user asks to apply fact-check results to a document, or to edit a document based on a previously produced fact-check-report.md.
data-ai
多份資料檔整合流程。當需要將兩份以上的資料檔(如 JSON、CSV)合併、補齊闕漏欄位或去重成單一檔案時使用。以 dry-run、筆數核對與抽樣比對降低整合錯誤。