Marketplace

dotnet-test

This skill should be used when running .NET tests selectively with a build-first, test-targeted workflow. Use it for running tests with xUnit focus.

allowed_tools: Bash(dotnet build:*), Bash(dotnet test:*), Read, Grep, Glob

$ 설치

git clone https://github.com/NikiforovAll/claude-code-rules /tmp/claude-code-rules && cp -r /tmp/claude-code-rules/plugins/handbook-dotnet/skills/dotnet-test ~/.claude/skills/claude-code-rules

// tip: Run this command in your terminal to install the skill


name: dotnet-test description: This skill should be used when running .NET tests selectively with a build-first, test-targeted workflow. Use it for running tests with xUnit focus. allowed-tools: Bash(dotnet build:), Bash(dotnet test:), Read, Grep, Glob

.NET Test Runner

Run .NET tests selectively using a build-first, test-targeted workflow optimized for development speed.

Core Workflow

Follow this workflow to run tests efficiently:

Step 1: Build Solution First

Build the entire solution with minimal output to catch compile errors early:

dotnet build -p:WarningLevel=0 /clp:ErrorsOnly --verbosity minimal

Step 2: Run Specific Project Tests

Run tests for the specific test project with --no-build to skip redundant compilation:

dotnet test path/to/project --no-build --verbosity minimal

Step 3: Filter When Targeting Specific Tests

Narrow down to specific tests using filter expressions:

# By method name (contains)
dotnet test --no-build --filter "Name~MyTestMethod"

# By class name (exact match)
dotnet test --no-build --filter "ClassName=MyNamespace.MyTestClass"

# Combined filters
dotnet test --no-build --filter "Name~Create|Name~Update"

Quick Reference

Commands

CommandPurpose
dotnet build -p:WarningLevel=0 /clp:ErrorsOnly --verbosity minimalBuild solution with minimal output
dotnet test path/to/Tests.csproj --no-buildRun project tests (skip build)
dotnet test --no-build --logger "console;verbosity=detailed"Show ITestOutputHelper output
dotnet test --no-build --filter "..."Run filtered tests
dotnet test --no-build --list-testsList available tests without running

Filter Operators

OperatorMeaningExample
=Exact matchClassName=MyTests
!=Not equalName!=SkipThis
~ContainsName~Create
!~Does not containName!~Integration
|ORName~Test1|Name~Test2 (note '|' is an escape for markdown)
&ANDName~User&Category=Unit

xUnit Filter Properties

PropertyDescriptionExample
FullyQualifiedNameFull test name with namespaceFullyQualifiedName~MyNamespace.MyClass
DisplayNameTest display nameDisplayName=My_Test_Name
NameMethod nameName~ShouldCreate
CategoryTrait categoryCategory=Unit

Common Filter Patterns

# Run tests containing "Create" in method name
dotnet test --no-build --filter "Name~Create"

# Run tests in a specific class
dotnet test --no-build --filter "ClassName=MyNamespace.UserServiceTests"

# Run tests matching namespace pattern
dotnet test --no-build --filter "FullyQualifiedName~MyApp.Tests.Unit"

# Run tests with specific trait
dotnet test --no-build --filter "Category=Integration"

# Exclude slow tests
dotnet test --no-build --filter "Category!=Slow"

# Combined: class AND method pattern
dotnet test --no-build --filter "ClassName=OrderTests&Name~Validate"

ITestOutputHelper Output

To see output from xUnit's ITestOutputHelper, use the console logger with detailed verbosity:

dotnet test --no-build --logger "console;verbosity=detailed"

Reducing Output Noise

Verbosity levels for dotnet test:

LevelFlagDescription
quiet-v qMinimal output (pass/fail only)
minimal-v mClean summary, no test output
normal-v nDefault, shows discovered tests
detailed-v dShows more details
diagnostic-v diagMost verbose

To see test output, use grep to filter out discovery messages (for xUnit):

dotnet test --no-build --logger "console;verbosity=detailed" 2>&1 | grep -v "Discovered \[execution\]"

Framework Differences

This skill focuses on xUnit. For MSTest or NUnit, filter property names differ:

PropertyxUnitMSTestNUnit
Method nameNameNameName
Class nameClassNameClassNameClassName
Category/TraitCategoryTestCategoryCategory
Priority-PriorityPriority

Progressive Disclosure

For advanced debugging scenarios, load additional references:

  • references/blame-mode.md - Debugging test crashes and hangs with --blame
  • references/parallel-execution.md - Controlling parallel test execution

Load these references when:

  • Tests are crashing or hanging unexpectedly
  • Diagnosing test isolation issues
  • Optimizing test run performance

When to Use This Skill

Invoke when the user needs to:

  • Run targeted tests during development
  • Filter tests by method or class name
  • Understand test output and filtering options
  • Debug failing or hanging tests