.NET Core で dotnet test コマンドを使用することで、フィルター式を使用して、選択したテストを実行することができます。 この記事では、テストをフィルター処理する方法を示します。 この例では dotnet test を使用します。
vstest.console.exe を使用している場合は、--filter を --testcasefilter: に置き換えます。
構文
dotnet test --filter <Expression>
Expression は
<Property><Operator><Value>[|&<Expression>]形式です。式はブール演算子を使用して結合できます。
|はブール値 or、&はブール値 and に相当します。式はかっこで囲むことができます。 たとえば、
(Name~MyClass) | (Name~MyClass2)のように指定します。プロパティで、operator のない式は
FullyQualifiedNameとして解釈されます。 たとえば、dotnet test --filter xyzはdotnet test --filter FullyQualifiedName~xyzと同じです。Property は
Test Caseの属性です。 たとえば、よく利用される単体テスト フレームワークでは以下のプロパティがサポートされています。テスト フレームワーク サポートされるプロパティ MSTest FullyQualifiedNameNameClassNamePriorityTestCategoryxUnit FullyQualifiedNameDisplayNameTraitsNunit FullyQualifiedNameNamePriorityTestCategory演算子
-
=完全一致 -
!=完全一致ではない -
~含む -
!~含まない
-
Value は文字列です。 すべての参照で大文字と小文字が区別されます。
文字のエスケープ
フィルター式に感嘆符 (!) を使用するには、一部の Linux または macOS シェルでは、その前に円記号を付けてエスケープします (\!)。 たとえば、次のフィルターは、IntegrationTests を含む名前空間のすべてのテストをスキップします。
dotnet test --filter FullyQualifiedName\!~IntegrationTests
ジェネリック型パラメーターで FullyQualifiedName 値にコンマを含める場合は、%2C を指定してコンマをエスケープします。 次に例を示します。
dotnet test --filter "FullyQualifiedName=MyNamespace.MyTestsClass<ParameterType1%2CParameterType2>.MyTestMethod"
Name または DisplayNameの場合は、特殊文字の URL エンコードを使用します。 たとえば、MyTestMethod という名前と "text"文字列値を使用してテストを実行するには、次のフィルターを使用します。
dotnet test --filter "Name=MyTestMethod \(%22text%22\)"
MSTest の例
using Microsoft.VisualStudio.TestTools.UnitTesting;
namespace MSTestNamespace
{
[TestClass]
public class UnitTest1
{
[TestMethod, Priority(1), TestCategory("CategoryA")]
public void TestMethod1()
{
}
[TestMethod, Priority(2)]
public void TestMethod2()
{
}
}
}
| 正規表現 | 結果 |
|---|---|
dotnet test --filter Method |
FullyQualifiedName に Method が含まれるテストを実行します。 |
dotnet test --filter Name~TestMethod1 |
名前に TestMethod1 が含まれるテストを実行します。 |
dotnet test --filter ClassName=MSTestNamespace.UnitTest1 |
クラス MSTestNamespace.UnitTest1 内にあるテストを実行します。注: ClassName 値には名前空間があるため、ClassName=UnitTest1 は機能しません。 |
dotnet test --filter FullyQualifiedName!=MSTestNamespace.UnitTest1.TestMethod1 |
MSTestNamespace.UnitTest1.TestMethod1 以外のテストをすべて実行します。 |
dotnet test --filter TestCategory=CategoryA |
[TestCategory("CategoryA")] の注釈が付けられているテストを実行します。 |
dotnet test --filter Priority=2 |
[Priority(2)] の注釈が付けられているテストを実行します。 |
条件演算子 | と & の使用例:
UnitTest1に FullyQualifiedName が含まれるか、または、TestCategoryAttribute が"CategoryA"であるテストを実行するには。dotnet test --filter "FullyQualifiedName~UnitTest1|TestCategory=CategoryA"UnitTest1に FullyQualifiedName が含まれ、かつ、TestCategoryAttribute が"CategoryA"であるテストを実行するには。dotnet test --filter "FullyQualifiedName~UnitTest1&TestCategory=CategoryA"FullyQualifiedName に
UnitTest1が含まれ、かつ、TestCategoryAttribute が"CategoryA"であるか、または、PriorityAttribute の優先順位が1であるテストを実行するには。dotnet test --filter "(FullyQualifiedName~UnitTest1&TestCategory=CategoryA)|Priority=1"
xUnit の例
using Xunit;
namespace XUnitNamespace
{
public class TestClass1
{
[Fact, Trait("Priority", "1"), Trait("Category", "CategoryA")]
public void Test1()
{
}
[Fact, Trait("Priority", "2")]
public void Test2()
{
}
}
}
| 正規表現 | 結果 |
|---|---|
dotnet test --filter DisplayName=XUnitNamespace.TestClass1.Test1 |
XUnitNamespace.TestClass1.Test1 という 1 つのテストのみを実行します。 |
dotnet test --filter FullyQualifiedName!=XUnitNamespace.TestClass1.Test1 |
XUnitNamespace.TestClass1.Test1 以外のテストをすべて実行します。 |
dotnet test --filter DisplayName~TestClass1 |
表示名に TestClass1 が含まれるテストを実行します。 |
コード例では、特性をキー "Category" や "Priority" で定義すると、フィルター処理に使用できます。
| 正規表現 | 結果 |
|---|---|
dotnet test --filter XUnit |
FullyQualifiedName に XUnit が含まれるテストを実行します。 |
dotnet test --filter Category=CategoryA |
[Trait("Category", "CategoryA")] があるテストを実行します。 |
条件演算子 | と & の使用例:
TestClass1に FullyQualifiedName が含まれるか、または、Traitのキーが"Category"で値が"CategoryA"であるテストを実行するには。dotnet test --filter "FullyQualifiedName~TestClass1|Category=CategoryA"TestClass1に FullyQualifiedName が含まれ、かつ、Traitのキーが"Category"で値が"CategoryA"であるテストを実行するには。dotnet test --filter "FullyQualifiedName~TestClass1&Category=CategoryA"FullyQualifiedName に
TestClass1が含まれ、かつ、Traitのキーが"Category"で値が"CategoryA"であるか、または、Traitのキーが"Priority"で値が1であるテストを実行するには。dotnet test --filter "(FullyQualifiedName~TestClass1&Category=CategoryA)|Priority=1"
NUnit の例
using NUnit.Framework;
namespace NUnitNamespace
{
public class UnitTest1
{
[Test, Property("Priority", 1), Category("CategoryA")]
public void TestMethod1()
{
}
[Test, Property("Priority", 2)]
public void TestMethod2()
{
}
}
}
| 正規表現 | 結果 |
|---|---|
dotnet test --filter Method |
FullyQualifiedName に Method が含まれるテストを実行します。 |
dotnet test --filter Name~TestMethod1 |
名前に TestMethod1 が含まれるテストを実行します。 |
dotnet test --filter FullyQualifiedName~NUnitNamespace.UnitTest1 |
クラス NUnitNamespace.UnitTest1 内にあるテストを実行します。 |
dotnet test --filter FullyQualifiedName!=NUnitNamespace.UnitTest1.TestMethod1 |
NUnitNamespace.UnitTest1.TestMethod1 以外のテストをすべて実行します。 |
dotnet test --filter TestCategory=CategoryA |
[Category("CategoryA")] の注釈が付けられているテストを実行します。 |
dotnet test --filter Priority=2 |
[Priority(2)] の注釈が付けられているテストを実行します。 |
条件演算子 | と & の使用例:
UnitTest1 に FullyQualifiedName が含まれるか、または、Category が "CategoryA" であるテストを実行するには。
dotnet test --filter "FullyQualifiedName~UnitTest1|TestCategory=CategoryA"
UnitTest1 に FullyQualifiedName が含まれ、かつ、Category が "CategoryA" であるテストを実行するには。
dotnet test --filter "FullyQualifiedName~UnitTest1&TestCategory=CategoryA"
FullyQualifiedName に UnitTest1 が含まれ、かつ、Category が "CategoryA" であるか、または、Property の "Priority" が 1 であるテストを実行するには。
dotnet test --filter "(FullyQualifiedName~UnitTest1&TestCategory=CategoryA)|Priority=1"
詳細については、TestCase フィルターに関するページを参照してください。
関連項目
次の手順
.NET