Skip to content
csharp-nunit logo

NUnit Best Practices

csharp-nunit

NUnit best practices for standard and data-driven unit testing in .NET projects.

github/awesome-copilot9Kinstalls39.7Kstars.NET & C#

SKILL.md

Full skill instructions

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

More .NET & C# skills

Comprehensive C#/.NET design pattern analysis with actionable improvement recommendations.

39.7K 11.6K
View

Ready-to-use prompts for comprehensive .NET framework upgrade analysis and execution

39.7K 11.2K
View
csharp-async logo
.NET & C#

csharp-async

Best practices guide for C# asynchronous programming patterns and pitfalls.

39.7K 10.8K
View
csharp-xunit logo
.NET & C#

csharp-xunit

Comprehensive XUnit testing guide covering standard facts, data-driven theories, and best practices.

39.7K 10.3K
View
csharp-docs logo
.NET & C#

csharp-docs

XML documentation standards and patterns for C# public APIs and members.

39.7K 9.7K
View

Add Azure App Insights telemetry to ASP.NET Core or Node.js webapps hosted in Azure.

39.7K 9.7K
View
copilot-sdk logo
.NET & C#

copilot-sdk

Programmatic agent runtime for embedding Copilot's agentic workflows in applications across Python, TypeScript, Go, and .NET.

39.7K 9.5K
View

ASP.NET Minimal API endpoints with automatic OpenAPI/Swagger documentation and strong typing.

39.7K 9.2K
View

Comprehensive guide for building Blazor apps with Microsoft Fluent UI components.

39.7K 9.1K
View

Generate Dockerfile and .dockerignore files customized for ASP.NET Core containerization.

39.7K 9K
View
csharp-mstest logo
.NET & C#

csharp-mstest

Modern unit testing with MSTest 3.x/4.x using current APIs and best practices.

39.7K 9K
View
csharp-tunit logo
.NET & C#

csharp-tunit

Best practices for writing unit tests with TUnit, including data-driven and advanced testing patterns.

39.7K 8.9K
View

Coding & apps AI tools

Opus Clip logo
Coding & apps

Opus Clip

Opus.ai: Revolutionize Your Web Experience

Free
View
Imagica logo
Coding & apps

Imagica

Build a no-code AI app in minutes.

Freemium
View
E
Coding & apps

Emergent.sh

An IDE for code migration from legacy to modern frameworks through coding agents.

Freemium
View
Wonder Dynamics logo
Coding & apps

Wonder Dynamics

Automate CGI animation in live-action scenes

Paid
View
M
Coding & apps

Mixo

Launch a website in seconds with AI.

Paid
View
AI Code Convert logo
Coding & apps

AI Code Convert

Streamline Your Coding Experience with AI Code Helper

Free
View