csharp-nunit
NUnit best practices for standard and data-driven unit testing in .NET projects.
- Organize tests with
[TestFixture]classes matching production code, using[Test]methods namedMethodName_Scenario_ExpectedBehaviorand following Arrange-Act-Assert structure - Data-driven testing via
[TestCase],[TestCaseSource],[Values],[Range], and[Combinatorial]attributes for inline, programmatic, and parameterized test generation - Use
Assert.Thatwith constraint model (Is.EqualTo,Contains.Item) and specialized assertions likeCollectionAssert,StringAssert, andAssert.Throws<T>for exceptions - Manage test lifecycle with
[SetUp],[TearDown],[OneTimeSetUp], and[OneTimeTearDown]for per-test and per-class initialization - Keep tests focused, independent, and idempotent; use
[Category],[Order], and[Explicit]for organization and execution control
NUnit Best Practices
Your goal is to help me write effective unit tests with NUnit, 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, NUnit, and NUnit3TestAdapter packages
- Create test classes that match the classes being tested (e.g.,
CalculatorTestsforCalculator) - Use .NET SDK test commands:
dotnet testfor running tests
Test Structure
- Apply
[TestFixture]attribute to test classes - Use
[Test]attribute for test methods - Follow the Arrange-Act-Assert (AAA) pattern
- Name tests using the pattern
MethodName_Scenario_ExpectedBehavior - Use
[SetUp]and[TearDown]for per-test setup and teardown - Use
[OneTimeSetUp]and[OneTimeTearDown]for per-class setup and teardown
More from github/awesome-copilot
git-commit
Execute git commit with conventional commit message analysis, intelligent staging, and message generation. Use when user asks to commit changes, create a git commit, or mentions "/commit". Supports: (1) Auto-detecting type and scope from changes, (2) Generating conventional commit messages from diff, (3) Interactive commit with optional type/scope/description overrides, (4) Intelligent file staging for logical grouping
30.2Kgh-cli
GitHub CLI (gh) comprehensive reference for repositories, issues, pull requests, Actions, projects, releases, gists, codespaces, organizations, extensions, and all GitHub operations from the command line.
21.2Kdocumentation-writer
Diátaxis Documentation Expert. An expert technical writer specializing in creating high-quality software documentation, guided by the principles and structure of the Diátaxis technical documentation authoring framework.
17.4Kprd
Generate high-quality Product Requirements Documents (PRDs) for software systems and AI-powered features. Includes executive summaries, user stories, technical specifications, and risk analysis.
17.4Kexcalidraw-diagram-generator
Generate Excalidraw diagrams from natural language descriptions. Use when asked to "create a diagram", "make a flowchart", "visualize a process", "draw a system architecture", "create a mind map", or "generate an Excalidraw file". Supports flowcharts, relationship diagrams, mind maps, and system architecture diagrams. Outputs .excalidraw JSON files that can be opened directly in Excalidraw.
16.4Krefactor
Surgical code refactoring to improve maintainability without changing behavior. Covers extracting functions, renaming variables, breaking down god functions, improving type safety, eliminating code smells, and applying design patterns. Less drastic than repo-rebuilder; use for gradual improvements.
16.1K