‹ 首页

dotnet-test

@nikiforovall · 收录于 昨天 · 上游提交 3 周前

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.

适合你,如果需要在 .NET 项目中运行 xUnit 测试

/ 通过 npx 安装 校验哈希
npx oh-my-skill add nikiforovall/claude-code-rules/dotnet-test
/ 通过 bash 安装
curl -fsSL https://oh-my-skill.com/install.sh | bash -s -- nikiforovall/claude-code-rules/dotnet-test
/ 已经装过?验证本机副本,不用重装
npx oh-my-skill verify nikiforovall/claude-code-rules/dotnet-test
安装目标可用 --agent / --scope 或 --to 明确指定;省略时只会在唯一已存在的 agent 目录上自动选择,零命中或多命中会停止并提示。content_hash 缺失或不一致均拒装。
133GitHub stars
~1.4K最小装载
~4.8K含声明引用
~4.8K文本包总量
索引托管

怎么用

商店整理自技能原文 · 版本 642e21e · 表述以原文为准
它做什么

装上后,Claude 会先构建整个 .NET 解决方案,然后用 --no-build 运行指定测试项目的测试,并支持按 FullyQualifiedName、DisplayName 等属性筛选,只执行匹配的测试用例。还能调整输出详细程度。

什么时候触发

当用户要求运行 .NET 测试、按方法/类名筛选、过滤 xUnit Theory 测试参数、或调试测试问题时触发。

装好后可以这样说
Claude 会构建项目并执行该类下的全部测试。
使用 FullyQualifiedName 过滤器。
使用 DisplayName 过滤器并显示详细输出。
技能原文 SKILL.md作者撰写 · Apache-2.0 · 642e21e

.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 using FullyQualifiedName (recommended)
dotnet test --no-build --filter "FullyQualifiedName~MyTestMethod"

# By class name using FullyQualifiedName (recommended)
dotnet test --no-build --filter "FullyQualifiedName~MyTestClass"

# By parameter values in Theory tests (xUnit)
dotnet test --no-build --filter "DisplayName~paramValue"

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

Note: Properties Name~ and ClassName= may not work reliably. Use FullyQualifiedName~ instead.

Quick Reference
Commands

| Command | Purpose | | -------------------------------------------------------------------- | ------------------------------------ | | dotnet build -p:WarningLevel=0 /clp:ErrorsOnly --verbosity minimal | Build solution with minimal output | | dotnet test path/to/Tests.csproj --no-build | Run 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-tests | List available tests without running |

Filter Operators

| Operator | Meaning | Example | | -------- | ---------------- | -------------------------------------------------------------- | | = | Exact match | ClassName=MyTests | | != | Not equal | Name!=SkipThis | | ~ | Contains | Name~Create | | !~ | Does not contain | Name!~Integration | | \| | OR | Name~Test1\|Name~Test2 (note '\|' is an escape for markdown) | | & | AND | Name~User&Category=Unit |

xUnit Filter Properties

| Property | Description | Reliability | Example | | -------------------- | ---------------------------------------------- | ------------ | ------------------------------------------------------ | | FullyQualifiedName | Full test name with namespace | ✅ Reliable | FullyQualifiedName~MyNamespace.MyClass | | DisplayName | Test display name (includes Theory parameters) | ✅ Reliable | DisplayName~My_Test_Name or DisplayName~paramValue | | Name | Method name | ⚠️ Unreliable | Use FullyQualifiedName~ instead | | ClassName | Class name | ⚠️ Unreliable | Use FullyQualifiedName~ instead | | Category | Trait category | ✅ Reliable | Category=Unit |

When to use DisplayName: Essential for filtering Theory tests by their parameter values. xUnit includes all parameter values in the DisplayName (e.g., MyTest(username: "admin", age: 30)), making it ideal for running specific test cases. See [references/theory-parameter-filtering.md](references/theory-parameter-filtering.md) for detailed guidance.

Common Filter Patterns
# Run tests containing "Create" in method name
dotnet test --no-build --filter "FullyQualifiedName~Create"

# Run tests in a specific class
dotnet test --no-build --filter "FullyQualifiedName~UserServiceTests"

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

# Run Theory tests with specific parameter value
dotnet test --no-build --filter "DisplayName~admin_user"

# 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 parameter value (Theory tests)
dotnet test --no-build --filter "FullyQualifiedName~OrderTests&DisplayName~USD"

# Multiple parameter values (OR condition)
dotnet test --no-build --filter "DisplayName~EUR|DisplayName~GBP"
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:

| Level | Flag | Description | | ---------- | --------- | ------------------------------- | | quiet | -v q | Minimal output (pass/fail only) | | minimal | -v m | Clean summary, no test output | | normal | -v n | Default, shows discovered tests | | detailed | -v d | Shows more details | | diagnostic | -v diag | Most 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:

| Property | xUnit | MSTest | NUnit | | -------------- | ----------- | -------------- | ----------- | | Method name | Name | Name | Name | | Class name | ClassName | ClassName | ClassName | | Category/Trait | Category | TestCategory | Category | | Priority | - | Priority | Priority |

Progressive Disclosure

For advanced scenarios, load additional references:

  • references/theory-parameter-filtering.md - Filtering xUnit Theory tests by parameter values (string, numeric, boolean, etc.)
  • references/blame-mode.md - Debugging test crashes and hangs with --blame
  • references/parallel-execution.md - Controlling parallel test execution

Load these references when:

  • Working with xUnit Theory tests and need to filter by specific parameter values
  • 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
  • Filter xUnit Theory tests by specific parameter values (e.g., run only admin user test cases)
  • Understand test output and filtering options
  • Debug failing or hanging tests
按 Apache-2.0 许可原样转载,未经改动 · 在 GitHub 查看 →

评论

登录即可评论;带「已验证安装」的,是发布者名下有本店的安装或持有记录。