tunit-filtering
Use for quick TUnit --treenode-filter patterns.
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
메뉴
Use for quick TUnit --treenode-filter patterns.
Codex 또는 Claude로 설치 이 Prompt를 복사해 Codex, Claude 또는 다른 어시스턴트에 붙여 넣으면 Skill 페이지를 검토하고 설치를 진행할 수 있습니다.
SOC 직업 분류 기준
Use when converting an Aspire AppHost (typically Program.cs/AppHost.cs) into Purview.Aspire.ResourceKit patterns: generate a HostKit, split resources into ResourceKits with BuildResource/ConfigureResource, map existing config into generated options (IsEnabled/Name), replace direct wiring with AddAspireResourceKit, and update tests/fixtures/configuration to use OptionsHelper and ResourceKit semantics.
Use when creating, moving, or splitting projects in a repository that uses Purview.DotNetProjectSdk, especially for src/tests placement, test suffix naming, namespace alignment, and automatic project-reference behavior.
Create and apply a prerelease bump using Changesets CLI, with the new changeset markdown summarizing the actual changes since the last shipped release.
Use when creating or refactoring .NET tests with TUnit conventions (AAA pattern, naming, async assertions, and CancellationToken usage).
Git workflow and conventional commit guidance.
Lefthook Git hook integration.
| name | tunit-filtering |
| description | Use for quick TUnit --treenode-filter patterns. |
Use this skill when you already know you need filtering syntax and want concise examples.
For full execution and troubleshooting guidance, use ../tunit-test-runner/SKILL.md.
--treenode-filter for narrowing tests (do not use --filter).--treenode-filterSelect tests by tree path:
/<Assembly>/<Namespace>/<Class name>/<Test name>
Each segment maps to one level:
Examples:
/*/*/LoginTests/* → all tests in class LoginTests/*/*/*/AcceptCookiesTest → a single test by name/*/MyProject.Tests.Integration/*/* → tests in a namespace* wildcardMatches any value in a segment, or part of a value.
Examples:
/*/*/LoginTests*/*/*/*/MyProject.Tests.Api*/*= equalityMatches an exact property value.
Example:
/*/*/*/*[Category=Unit]!= not equalExcludes a property value.
Example:
[Category!=Slow]& ANDCombines multiple conditions in the same segment or property group.
Examples:
/**[(Category=Unit)&(Priority=High)]/*/*/*/*[(Category=Unit)&(Priority=High)]| ORMatches either condition, inside a single parenthesized group.
Examples:
/*/*/(LoginTests)|(SignupTests)/*/**[(Category=Unit)|(Priority=High)]** match-allMatches any path depth, but it must appear at the end of the path.
Examples:
/**/MyAssembly/**You can filter on custom properties in the last segment using [...].
Examples:
/*/*/*/*[Category=Unit]/*/*/*/*[Owner=*Team-Backend*]/*/*/*/*[Category!=Slow][...] is allowed per path segment.& or |.[Category=Smoke]|[Priority=High] are not valid.** must be at the end; /**/Path is not allowed./*/*/*/*/*/*/*/*[Category=Unit]/*/*/*/*[(Category=Unit)&(Priority=High)]/*/MyProject.Tests.Integration/*/*[Priority=Critical]dotnet test noteTUnit does not use the usual VSTest --filter syntax. Use --treenode-filter instead.
Preferred: dotnet test --treenode-filter "..."
Compatibility form (older SDKs): dotnet test -- --treenode-filter "..."
Use path-like tree-node filters for common flows:
/*/*/*/*/ — all tests/*/*/*/MyFeatureTests/* — class-scoped/*/*/*/*/MyScenario* — name patternIf zero tests run:
--treenode-filter is used (not --filter).dotnet test --treenode-filter "..." first; if needed for your SDK version, use dotnet test -- --treenode-filter "..."./*/*/*/*/), then narrow.[Test] methods.[(A=1)&(B=2)]).../tunit-test-runner/SKILL.md../dotnet-tunit/SKILL.md