
csharp-nunit
✓ Official★ 36,200by github · part of github/awesome-copilot
NUnit best practices for standard and data-driven unit testing in .NET projects. Organize tests with [TestFixture] classes matching production code, using [Test] methods named MethodName_Scenario_ExpectedBehavior and 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.That with constraint model ( Is.EqualTo , Contains.Item ) and...
NUnit best practices for standard and data-driven unit testing in .NET projects. Organize tests with [TestFixture] classes matching production code, using [Test] methods named MethodName_Scenario_ExpectedBehavior and 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.That with constraint model ( Is.EqualTo , Contains.Item ) and...
Inspect the full instructions your agent will receiveExpandCollapse
This is the exact playbook injected into your agent when the skill activates — shown here so you can audit it before installing. You don't need to read it to use the skill.
by github
NUnit best practices for standard and data-driven unit testing in .NET projects. Organize tests with [TestFixture] classes matching production code, using [Test] methods named MethodName_Scenario_ExpectedBehavior and 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.That with constraint model ( Is.EqualTo , Contains.Item ) and...
npx skills add https://github.com/github/awesome-copilot --skill csharp-nunit
Download ZIPGitHub36.2k
NUnit Best Practices
Your goal is to help me write effective unit tests with NUnit, covering both standard and data-driven testing approaches.
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.Thatwith constraint model (preferred NUnit style) -
Use constraints like
Is.EqualTo,Is.SameAs,Contains.Item -
Use
Assert.AreEqualfor simple value equality (classic style) -
Use
CollectionAssertfor collection comparisons -
Use
StringAssertfor string-specific assertions -
Use
Assert.Throws<T>orAssert.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
npx skills add https://github.com/github/awesome-copilot --skill csharp-nunitRun this in your project — your agent picks the skill up automatically.
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
No common issues documented yet. If you hit a problem, the repository's GitHub Issues page is the best place to look.