mcpField
F
filter-syntax

filter-syntax

github.com/dotnetテスト・品質5.8k4.6k 回インストール1 日前に更新
リポジトリ

filter-syntax について

filter-syntaxは、名前、クラス、名前空間、特性で.NETテストを選ぶ開発者向けのフィルター構文リファレンスです。VSTestとMTPの構文や、両者のフィルター変換方法をまとめています。

主な機能

  1. 01VSTestフィルター式の解説
  2. 02フレームワーク別対応プロパティの一覧
  3. 03MTP固有のフィルターフラグの説明
  4. 04VSTestからMTPへの対応表

活用シーン

  1. 01名前による.NETテストの絞り込み
  2. 02クラスや特性によるテスト選択
  3. 03xUnit v3のテストフィルターをMTP向けに変換

インストール

コマンドをコピーしてターミナルで実行します。

$npx skills add https://github.com/dotnet/skills --skill filter-syntax

インストール後、Claude Code で/filter-syntaxを入力して読み込まれたか確認します。

詳細

テストフィルター構文リファレンス

フィルター構文は、プラットフォームとテストフレームワークによって異なります。

VSTest フィルター(MSTest、xUnit v2、VSTest 上の NUnit)

dotnet test --filter <EXPRESSION>

式の構文:<Property><Operator><Value>[|&<Expression>]

演算子:

演算子意味
=完全一致
!=完全一致しない
~含む
!~含まない

結合子: |(OR)、&(AND)。グループ化には括弧を使用します:(A|B)&C

フレームワークごとの対応プロパティ:

フレームワークプロパティ
MSTestFullyQualifiedName、Name、ClassName、Priority、TestCategory
xUnitFullyQualifiedName、DisplayName、Traits
NUnitFullyQualifiedName、Name、Priority、TestCategory

演算子を含まない式は、FullyQualifiedName~<value> として扱われます。

例(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 フィルター — MSTest と NUnit

MTP 上の MSTest と NUnit は、VSTest と同じ --filter 構文(同じプロパティ、演算子、結合子)を使用します。異なるのはフラグの渡し方だけです。

# .NET SDK 8/9 (after --)
dotnet test -- --filter "Name~LoginTest"

# .NET SDK 10+ (direct)
dotnet test --filter "Name~LoginTest"

MTP フィルター — xUnit(v3)

MTP 上の xUnit v3 は、汎用的な --filter 式の代わりに、フレームワーク固有のフィルターフラグを使用します。

フラグ説明
--filter-class "name"指定したクラス内のすべてのテストを実行
--filter-not-class "name"指定したクラス内のすべてのテストを除外
--filter-method "name"特定のテストメソッドを実行
--filter-not-method "name"特定のテストメソッドを除外
--filter-namespace "name"指定した名前空間内のすべてのテストを実行
--filter-not-namespace "name"指定した名前空間内のすべてのテストを除外
--filter-trait "name=value"一致するトレイトを持つテストを実行
--filter-not-trait "name=value"一致するトレイトを持つテストを除外

1 つのフラグに複数の値を指定できます:--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 クエリフィルター言語

複雑な式には、パスセグメント構文を使用する --filter-query を使用します。

/<assemblyFilter>/<namespaceFilter>/<classFilter>/<methodFilter>[traitName=traitValue]

各セグメントは、アセンブリ名、名前空間、クラス名、メソッド名に対して照合されます。任意のセグメントで「すべてに一致」させるには * を使用します。ドキュメント: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 フィルター — TUnit

TUnit は、パスベースの構文で --treenode-filter を使用します。

--treenode-filter "/<Assembly>/<Namespace>/<ClassName>/<TestName>"

ワイルドカード(*)は任意のセグメントで使用できます。プロパティベースのフィルタリングでは、フィルター演算子をテスト名に追加できます。

演算子意味
*ワイルドカード一致
=プロパティの完全一致(例:[Category=Unit])
!=プロパティ値を除外
&AND(条件を結合)
|OR(セグメント内で使用。括弧が必要)

例(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 フィルターの変換(移行用)

MSTest、NUnit、xUnit.net v2(YTest.MTP.XUnit2 を使用):VSTest の --filter 構文は、VSTest と MTP の両方で同一です。変更は不要です。

xUnit.net v3(ネイティブ MTP):xUnit.net v3 は、MTP 上で VSTest の --filter 構文をサポートしていません。xUnit.net v3 のネイティブオプションを使ってフィルターを変換してください。

VSTest の --filter 構文xUnit.net v3 MTP の同等構文備考
FullyQualifiedName~ClassName--filter-class *ClassName*部分文字列一致にはワイルドカードが必要
FullyQualifiedName=Ns.Class.Method--filter-method Ns.Class.Method完全修飾メソッド名での完全一致
Name=MethodName--filter-method *MethodName*部分文字列一致にはワイルドカードが必要
Category=Value(トレイト)--filter-trait "Category=Value"トレイト名と値のペアでフィルタリング
複雑な式--filter-query "expr"xUnit.net クエリフィルター言語を使用(上記参照)

コメント