Bietet Referenzsyntax zum Erstellen und Übersetzen von Testfiltern zwischen VSTest und MTP für MSTest, NUnit, xUnit v3 und TUnit.
- GitHub Stars
- 5.942
- Dateien
- 1
- Letzter Commit
- 11. Nov. 2026
- Lizenz
- MIT
- Erlaubte Tools
- —
Was macht der filter-syntax Skill?
filter-syntax ist ein Agent Skill. Bietet Referenzsyntax zum Erstellen und Übersetzen von Testfiltern zwischen VSTest und MTP für MSTest, NUnit, xUnit v3 und TUnit.
Zusammenfassung erzeugt aus der SKILL.md des Skills.
Über den filter-syntax skill
Diese Skill ermöglicht das Erstellen und Übersetzen von Testfiltern für .NET-Testing-Frameworks. Sie dient als Referenz für Entwickler, die spezifische Command-Line-Ausdrücke für VSTest- oder MTP-Umgebungen konstruieren müssen. Das Tool ist so konzipiert, dass es erst geladen wird, nachdem eine spezifische Plattform oder ein Framework identifiziert wurde; es fungiert als Nachschlagewerk für Tools wie run-tests und mtp-hot-reload, anstatt direkt aufgerufen zu werden.
Nutzer können auf Syntaxregeln für MSTest, NUnit, xUnit v3 und TUnit zugreifen. Es wird detailliert beschrieben, wie Operatoren wie Exact Match, Contains und logische Kombinatoren wie AND und OR verwendet werden. Die Skill bietet zudem die Logik für die Übersetzung von Filtern beim Migrieren von VSTest zu MTP und hilft Entwicklern dabei, generische Ausdrücke in framework-spezifische Flags wie --filter-class oder das von TUnit verwendete pfadbasierte --treenode-filter umzuwandeln.
Was ein agent damit machen kann
- 1VSTest-Filterausdrücke konstruierenGeneriere einen Befehl, um Tests in einer bestimmten Kategorie mit MSTest oder NUnit auszuführen.
- 2Komplexe xUnit-Queries ausführenErstelle eine Path-Segment-Query, um Tests nach Assembly, Namespace und Traits zu filtern.
Geschrieben basierend auf dem SKILL.md des skills. Jeder use case wurde gegen ein zitat daraus geprüft.
So installierst du den filter-syntax Skill
Jeder Befehl kopiert den Skill-Ordner in das Skills-Verzeichnis des Clients. Starte den Client neu oder beginne eine neue Session, um ihn zu laden.Den filter-syntax Skill in Plugin installieren
/plugin marketplace add dotnet/skills /plugin install dotnet-test@dotnet-agent-skills
Den filter-syntax Skill in Claude Code installieren
~/.claude/skills/filter-syntax/SKILL.md
$ npx degit dotnet/skills/plugins/dotnet-test/skills/filter-syntax ~/.claude/skills/filter-syntaxDen filter-syntax Skill in Claude Code (project) installieren
.claude/skills/filter-syntax/SKILL.md
$ npx degit dotnet/skills/plugins/dotnet-test/skills/filter-syntax .claude/skills/filter-syntaxDen filter-syntax Skill in Codex installieren
~/.agents/skills/filter-syntax/SKILL.md
$ npx degit dotnet/skills/plugins/dotnet-test/skills/filter-syntax ~/.agents/skills/filter-syntaxDen filter-syntax Skill in Gemini CLI installieren
~/.gemini/skills/filter-syntax/SKILL.md
$ npx degit dotnet/skills/plugins/dotnet-test/skills/filter-syntax ~/.gemini/skills/filter-syntaxDen filter-syntax Skill in Claude.ai installieren
npx degit dotnet/skills/plugins/dotnet-test/skills/filter-syntax filter-syntax && zip -r filter-syntax.zip filter-syntax # claude.ai → Customize → Skills → + → Create skill → Upload a skill → filter-syntax.zip
Automatisierte Checks
Geluften am 15. Nov. 2026Vollständiger Bericht →Hat unsere automatischen Prüfungen bestanden. Das ist kein Sicherheitsaudit: Lesen Sie die Skripte, bevor ein Agent sie ausführt. Wie die Checks funktionieren · Was du für mehr Punkte verbessern kannst
- Source Repository verknüpft und erreichbardotnet/skills/plugins/dotnet-test/skills/filter-syntax is public and reachablegithub.com/dotnet/skills/tree/HEAD/plugins/dotnet-test/skill ↗Bestanden
- Open Source Lizenz (OSI)MITspdx.org/licenses/MIT.html ↗Bestanden
- Commit oder Release im letzten JahrLast commit 2026-11-11github.com/dotnet/skills/commits ↗Bestanden
- Keine Download-und-Ausführen-Muster oder Zugangsdatendiebstahl in SkriptenNo scripts in the skill folderBestanden
- Keine versteckten Anweisungen in SKILL.mdNo override phrases, safeguard switches, credential requests or hidden charactersgithub.com/dotnet/skills/blob/HEAD/plugins/dotnet-test/skill ↗Bestanden
- Vorab erlaubte Tools sind eingeschränktNo pre-approved tools; the agent asks before using onegithub.com/dotnet/skills/blob/HEAD/plugins/dotnet-test/skill ↗Bestanden
- SKILL.md folgt dem Agent-Skills-Formatthe description does not say when to use the skillgithub.com/dotnet/skills/blob/HEAD/plugins/dotnet-test/skill ↗Befund
SKILL.md
Auf GitHub ansehenTest Filter Syntax Reference
Filter syntax depends on the platform and test framework.
VSTest filters (MSTest, xUnit v2, NUnit on VSTest)
dotnet test --filter <EXPRESSION>
Expression syntax: <Property><Operator><Value>[|&<Expression>]
Operators:
| Operator | Meaning |
|---|---|
= |
Exact match |
!= |
Not exact match |
~ |
Contains |
!~ |
Does not contain |
Combinators: | (OR), & (AND). Parentheses for grouping: (A|B)&C
Supported properties by framework:
| Framework | Properties |
|---|---|
| MSTest | FullyQualifiedName, Name, ClassName, Priority, TestCategory |
| xUnit | FullyQualifiedName, DisplayName, Traits |
| NUnit | FullyQualifiedName, Name, Priority, TestCategory |
An expression without an operator is treated as FullyQualifiedName~<value>.
Examples (VSTest):
# Run tests whose name contains "LoginTest"
dotnet test --filter "Name~LoginTest"
# Run a specific test class
dotnet test --filter "ClassName=MyNamespace.MyTestClass"
# Run tests in a category
dotnet test --filter "TestCategory=Integration"
# Exclude a category
dotnet test --filter "TestCategory!=Slow"
# Combine: class AND category
dotnet test --filter "ClassName=MyNamespace.MyTestClass&TestCategory=Unit"
# Either of two classes
dotnet test --filter "ClassName=MyNamespace.ClassA|ClassName=MyNamespace.ClassB"
MTP filters — MSTest and NUnit
MSTest and NUnit on MTP use the same --filter syntax as VSTest (same properties, operators, and combinators). The only difference is how the flag is passed:
# .NET SDK 8/9 (after --)
dotnet test -- --filter "Name~LoginTest"
# .NET SDK 10+ (direct)
dotnet test --filter "Name~LoginTest"
MTP filters — xUnit (v3)
xUnit v3 on MTP uses framework-specific filter flags instead of the generic --filter expression:
| Flag | Description |
|---|---|
--filter-class "name" |
Run all tests in a given class |
--filter-not-class "name" |
Exclude all tests in a given class |
--filter-method "name" |
Run a specific test method |
--filter-not-method "name" |
Exclude a specific test method |
--filter-namespace "name" |
Run all tests in a namespace |
--filter-not-namespace "name" |
Exclude all tests in a namespace |
--filter-trait "name=value" |
Run tests with a matching trait |
--filter-not-trait "name=value" |
Exclude tests with a matching trait |
Multiple values can be specified with a single flag: --filter-class Foo Bar.
# .NET SDK 8/9
dotnet test -- --filter-class "MyNamespace.LoginTests"
# .NET SDK 10+
dotnet test --filter-class "MyNamespace.LoginTests"
# Combine: namespace + trait
dotnet test --filter-namespace "MyApp.Tests.Integration" --filter-trait "Category=Smoke"
xUnit v3 query filter language
For complex expressions, use --filter-query with a path-segment syntax:
/<assemblyFilter>/<namespaceFilter>/<classFilter>/<methodFilter>[traitName=traitValue]
Each segment matches against: assembly name, namespace, class name, method name. Use * for "match all" in any segment. Documentation: https://xunit.net/docs/query-filter-language
# xUnit.net v3 MTP — using query language (assembly/namespace/class/method[trait])
dotnet test -- --filter-query "/*/*/*IntegrationTests*/*[Category=Smoke]"
MTP filters — TUnit
TUnit uses --treenode-filter with a path-based syntax:
--treenode-filter "/<Assembly>/<Namespace>/<ClassName>/<TestName>"
Wildcards (*) are supported in any segment. Filter operators can be appended to test names for property-based filtering.
| Operator | Meaning |
|---|---|
* |
Wildcard match |
= |
Exact property match (e.g., [Category=Unit]) |
!= |
Exclude property value |
& |
AND (combine conditions) |
| |
OR (within a segment, requires parentheses) |
Examples (TUnit):
# All tests in a class
dotnet run --treenode-filter "/*/*/LoginTests/*"
# A specific test
dotnet run --treenode-filter "/*/*/*/AcceptCookiesTest"
# By namespace prefix (wildcard)
dotnet run --treenode-filter "/*/MyProject.Tests.Api*/*/*"
# By custom property
dotnet run --treenode-filter "/*/*/*/*[Category=Smoke]"
# Exclude by property
dotnet run --treenode-filter "/*/*/*/*[Category!=Slow]"
# OR across classes
dotnet run --treenode-filter "/*/*/(LoginTests)|(SignupTests)/*"
# Combined: namespace + property
dotnet run --treenode-filter "/*/MyProject.Tests.Integration/*/*/*[Priority=Critical]"
VSTest → MTP filter translation (for migration)
MSTest, NUnit, and xUnit.net v2 (with YTest.MTP.XUnit2): The VSTest --filter syntax is identical on both VSTest and MTP. No changes needed.
xUnit.net v3 (native MTP): xUnit.net v3 does NOT support the VSTest --filter syntax on MTP. Translate filters using xUnit.net v3's native options:
VSTest --filter syntax |
xUnit.net v3 MTP equivalent | Notes |
|---|---|---|
FullyQualifiedName~ClassName |
--filter-class *ClassName* |
Wildcards required for substring match |
FullyQualifiedName=Ns.Class.Method |
--filter-method Ns.Class.Method |
Exact match on fully qualified method |
Name=MethodName |
--filter-method *MethodName* |
Wildcards for substring match |
Category=Value (trait) |
--filter-trait "Category=Value" |
Filter by trait name/value pair |
| Complex expressions | --filter-query "expr" |
Uses xUnit.net query filter language (see above) |
Dateien in diesem Skill
1filter-syntax Skill-Fragen
Wie installiere ich den filter-syntax Skill in Claude Code?
Führe npx degit dotnet/skills/plugins/dotnet-test/skills/filter-syntax ~/.claude/skills/filter-syntax aus. Claude Code lädt Skills aus ~/.claude/skills (alle Projekte) oder .claude/skills (ein Projekt) und nutzt einen Skill, wenn seine Beschreibung zur Aufgabe passt.
Welche Clients können den filter-syntax Skill nutzen?
Jeder Client, der das Agent Skills-Format liest: Claude Code, Codex, Gemini CLI und claude.ai (als ZIP hochladen). Skripte im Skill laufen nur dort, wo der Client Codeausführung erlaubt.
Wie führe ich Tests in einer bestimmten Kategorie mit VSTest aus?
Du kannst die TestCategory-Property mit einem Exact-Match-Operator verwenden, zum Beispiel: dotnet test --filter "TestCategory=Integration".
Unterstützt xUnit v3 auf MTP die Standard-VSTest-Filtersyntax?
Nein, xUnit v3 auf MTP unterstützt die Standard-VSTest --filter-Syntax nicht und erfordert die Verwendung von framework-spezifischen Flags oder der --filter-query-Option.
Wie lautet die Syntax für das TUnit Tree-Node-Filtering?
TUnit verwendet eine pfadbasierte Syntax: --treenode-filter "/<Assembly>/<Namespace>/<ClassName>/<TestName>" und unterstützt Wildcards.