All skills
github avatar

/csharp-nunit

@90921cc official
by githubgithub/awesome-copilot40k stars
5,040

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

Use this Skill: https://skilld.dev/gh/github/awesome-copilot/csharp-nunit

This session only. Nothing lands on disk.

SKILL.md

≈21 tokens always: the name and description. ≈682 when used: this file.

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., CalculatorTests for Calculator)
  • Use .NET SDK test commands: dotnet test for 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
  • Use [SetUpFixture] for assembly-level setup and teardown

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 [TestCase] for inline test data
  • Use [TestCaseSource] for programmatically generated test data
  • Use [Values] for simple parameter combinations
  • Use [ValueSource] for property or method-based data sources
  • Use [Random] for random numeric test values
  • Use [Range] for sequential numeric test values
  • Use [Combinatorial] or [Pairwise] for combining multiple parameters

Assertions

  • Use Assert.That with constraint model (preferred NUnit style)
  • Use constraints like Is.EqualTo, Is.SameAs, Contains.Item
  • Use Assert.AreEqual for simple value equality (classic style)
  • Use CollectionAssert for collection comparisons
  • Use StringAssert for string-specific assertions
  • Use Assert.Throws<T> or Assert.ThrowsAsync<T> to test exceptions
  • Use descriptive messages in assertions for clarity on failure

Mocking and Isolation

  • Consider using Moq or NSubstitute alongside NUnit
  • 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 categories with [Category("CategoryName")]
  • Use [Order] to control test execution order when necessary
  • Use [Author("DeveloperName")] to indicate ownership
  • Use [Description] to provide additional test information
  • Consider [Explicit] for tests that shouldn't run automatically
  • Use [Ignore("Reason")] to temporarily skip tests

Source: SKILL.md on GitHub

1 warning16d5 checks · Risk SAFE
  • Gen Agent Trust Hub16d

    This skill provides best practices and guidelines for using the NUnit testing framework in C#. It covers project setup, test structure, assertions, and mocking using industry-standard tools and libraries. No security issues were detected.

  • Socket16d

    No alerts

  • Snyk16d

    Risk: LOW · No issues

  • Runlayer7mo

    1/1 file flagged

  • ZeroLeaks5mo

    Score: 93/100 · 2 sections analyzed

Signed by skilld at 90921cc. This ties the file your Agent reads to that commit on GitHub. It does not review the instructions.

Last checked against GitHub 19 hours ago.

Activeupdated 5 months ago
  • Testing
  • csharp
  • nunit
  • unit-testing
  • data-driven-tests
  • dotnet
  • assertions
  • test-fixtures

README badge

README badge for github/awesome-copilot/csharp-nunit

Provides NUnit best practices for C# unit testing, including test structure, data-driven approaches with TestCase and TestCaseSource, assertion patterns, and mocking strategies. Covers standard test organization, the Arrange-Act-Assert pattern, and NUnit-specific attributes like TestFixture, SetUp, and data source decorators.

Generated from the current SKILL.md.

Does this skill cover async testing with NUnit?
Yes. The skill mentions `Assert.ThrowsAsync<T>` for testing async exceptions, and supports async test methods via NUnit's async capabilities.
What mocking libraries does this skill recommend?
The skill suggests Moq or NSubstitute as companions to NUnit for dependency mocking and test isolation.
How do I run tests with this skill's approach?
Use `dotnet test` via the .NET SDK. The skill requires NUnit, Microsoft.NET.Test.Sdk, and NUnit3TestAdapter packages in a separate test project.
Does this skill cover data-driven testing?
Yes. It covers `[TestCase]`, `[TestCaseSource]`, `[Values]`, `[ValueSource]`, `[Random]`, `[Range]`, and `[Combinatorial]` / `[Pairwise]` for parameterized tests.

Generated from the current SKILL.md. These answers refresh after source changes.