此登錄庫釘選版本所收錄的最新上游作者日期。

csharp-xunit

已同步 v1.1.0 授權: MIT 來源: github/awesome-copilot/skills/csharp-xunit 提交: 4742f26 收錄的最新變更:

Get best practices for XUnit unit testing, including data-driven tests

摘要

用途
它說明如何依循 xUnit 慣例組織、整理與驗證單元測試,涵蓋斷言、共用測試環境、隔離及分類。
使用時機
在建立或改進 .NET 單元測試,並需要決定如何安排個別或資料驅動測試案例及共用測試環境時使用。
輸出結果
它提供測試專案設定、Arrange-Act-Assert 結構、Fact 與 Theory、資料來源、fixture、mocking、斷言及診斷方面的建議。
上游變更(7 筆,最新收錄 2026-02-19)
caab1f6 Convert all prompts to skills and update plugin manifests 新增 csharp-xunit 技能文件,提供專案設定、測試結構、資料驅動測試、斷言、模擬與測試組織的指引。
2f9c96d Fix deprecated 'mode' attribute in prompt files by renaming to 'agent' (#441) 將前置資料欄位 `mode` 改名為 `agent`,並保留值 `agent`。
2b45ca4 feat: update deprecated tool names to namespaced versions (#365) 更新提示檔的工具清單,將 `codebase` 改為 `search/codebase`。
69cd4fa update `editFiles` to `edit/editFiles` (#319) 更新提示檔的工具清單,將 `editFiles` 改為 `edit/editFiles`。
6fb794b Update development instructions and guidelines (#29) 將前置資料中 `mode`、`tools` 和 `description` 的值由雙引號改為單引號。
9872a77 Improving the tools for prompts 將提示檔的工具清單替換為 `changes`、`codebase`、`editFiles`、`problems` 和 `search`。
4c8ad05 Initial setup of repo with prompts and instructions 新增初始的 csharp-xunit 提示檔,提供專案設定、測試結構、資料驅動測試、斷言、模擬與測試組織的指引。
npx skills add "lettucebo/Skills#v2.2.0@csharp-xunit" --full-depth

⚠ v2.2.0 發布後即可使用

XUnit Best Practices

Your goal is to help me write effective unit tests with XUnit, covering both standard and data-driven testing approaches.

Project Setup

  • Use a separate test project with naming convention [ProjectName].Tests
  • Reference Microsoft.NET.Test.Sdk, xunit, and xunit.runner.visualstudio packages
  • Create test classes that match the classes being tested (e.g., CalculatorTests for Calculator)
  • Use .NET SDK test commands: dotnet test for running tests

Test Structure

  • No test class attributes required (unlike MSTest/NUnit)
  • Use fact-based tests with [Fact] attribute for simple tests
  • Follow the Arrange-Act-Assert (AAA) pattern
  • Name tests using the pattern MethodName_Scenario_ExpectedBehavior
  • Use constructor for setup and IDisposable.Dispose() for teardown
  • Use IClassFixture<T> for shared context between tests in a class
  • Use ICollectionFixture<T> for shared context between multiple test classes

Standard Tests

  • Keep tests focused on a single behavior
  • Avoid testing multiple behaviors in one test method
  • Use clear assertions that express intent
  • Include only the assertions needed to verify the test case
  • Make tests independent and idempotent (can run in any order)
  • Avoid test interdependencies

Data-Driven Tests

  • Use [Theory] combined with data source attributes
  • Use [InlineData] for inline test data
  • Use [MemberData] for method-based test data
  • Use [ClassData] for class-based test data
  • Create custom data attributes by implementing DataAttribute
  • Use meaningful parameter names in data-driven tests

Assertions

  • Use Assert.Equal for value equality
  • Use Assert.Same for reference equality
  • Use Assert.True/Assert.False for boolean conditions
  • Use Assert.Contains/Assert.DoesNotContain for collections
  • Use Assert.Matches/Assert.DoesNotMatch for regex pattern matching
  • Use Assert.Throws<T> or await Assert.ThrowsAsync<T> to test exceptions
  • Use fluent assertions library for more readable assertions

Mocking and Isolation

  • Consider using Moq or NSubstitute alongside XUnit
  • Mock dependencies to isolate units under test
  • Use interfaces to facilitate mocking
  • Consider using a DI container for complex test setups

Test Organization

  • Group tests by feature or component
  • Use [Trait("Category", "CategoryName")] for categorization
  • Use collection fixtures to group tests with shared dependencies
  • Consider output helpers (ITestOutputHelper) for test diagnostics
  • Skip tests conditionally with Skip = "reason" in fact/theory attributes

歷程

v1.0.0 bootstrap
v1.1.0 baseline-verified 4742f26
v1.1.0 license-refresh 4742f26