skills/csharp-nunit/SKILL.md
C# NUnit 測試規範:確保單元測試套用 AAA 模式、TestCase 資料驅動與合適的斷言 (Assertions)。
npx skillsauth add CloudyWing/ai-dotfiles csharp-nunitInstall 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.
當要求為 C# 撰寫單元測試時,請自動套用以下規範 (以 NUnit 為主)。
[Test] 標示無參數的單一測試案例。// Arrange、// Act、// Assert 等區塊注釋。[UnitOfWork]_[StateUnderTest]_[ExpectedBehavior] 格式(例如 Calculate_InvalidInput_ThrowsArgumentException)。[SetUp] 與 [TearDown]。[TestCase(...)]:用於簡單的行內資料。[TestCaseSource]:用於複雜的物件圖或須呼叫方法的外部資料來源。[Values] 或 [Random]:用於讓測試框架自動生成組合測試。Assert.That(actual, Is.EqualTo(expected)) 驗證值相等。Assert.Throws<T>() 或非同步的 Assert.ThrowsAsync<T>()。CollectionAssert;字串特定比對優先使用 StringAssert。using (Assert.EnterMultipleScope())。result.Should().BeTrue())。Task(不回傳 void):[Test]
public async Task SaveOrderAsync_ValidOrder_PersistsToDatabaseAsync() {
// Arrange
IOrderRepository repo = Substitute.For<IOrderRepository>();
OrderService sut = new(repo);
// Act
await sut.SaveOrderAsync(new Order { Id = 1 });
// Assert
await repo.Received(1).InsertAsync(Arg.Any<Order>());
}
Assert.ThrowsAsync<T>():[Test]
public async Task GetOrderAsync_NotFound_ThrowsKeyNotFoundExceptionAsync() {
IOrderRepository repo = Substitute.For<IOrderRepository>();
repo.GetByIdAsync(Arg.Any<int>()).Returns((Order?)null);
OrderService sut = new(repo);
Assert.ThrowsAsync<KeyNotFoundException>(
async () => await sut.GetOrderAsync(99)
);
}
async Task 回傳型別,NUnit 4+ 原生支援:[SetUp]
public async Task SetUpAsync() {
db = await DbFixture.CreateAsync();
}
[TearDown]
public async Task TearDownAsync() {
await db.DisposeAsync();
}
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、筆數核對與抽樣比對降低整合錯誤。