選択した単体テストの実行
.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)
のように指定します。FullyQualifiedName
プロパティで、operator のない式は contains として解釈されます。 たとえば、dotnet test --filter xyz
はdotnet test --filter FullyQualifiedName~xyz
と同じです。Property は
Test Case
の属性です。 たとえば、よく利用される単体テスト フレームワークでは以下のプロパティがサポートされています。テスト フレームワーク サポートされるプロパティ MSTest FullyQualifiedName
Name
ClassName
Priority
TestCategory
xUnit FullyQualifiedName
DisplayName
Traits
Nunit FullyQualifiedName
Name
Priority
TestCategory
演算子
=
完全一致!=
完全一致ではない~
含む!~
含まない
Value は文字列です。 すべての参照で大文字と小文字が区別されます。
文字のエスケープ
フィルター式に感嘆符 (!
) を使用するには、一部の Linux または macOS シェルでは、その前に円記号を付けてエスケープします (\!
)。 たとえば、次のフィルターは、IntegrationTests
を含む名前空間のすべてのテストをスキップします。
dotnet test --filter FullyQualifiedName\!~IntegrationTests
ジェネリック型パラメーターで FullyQualifiedName
値にコンマを含める場合は、%2C
を指定してコンマをエスケープします。 次に例を示します。
dotnet test --filter "FullyQualifiedName=MyNamespace.MyTestsClass<ParameterType1%2CParameterType2>.MyTestMethod"
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)] の注釈が付けられているテストを実行します。 |
条件演算子 |
と &
の使用例:
FullyQualifiedName に
UnitTest1
が含まれるか、または、TestCategoryAttribute が"CategoryA"
であるテストを実行するには。dotnet test --filter "FullyQualifiedName~UnitTest1|TestCategory=CategoryA"
FullyQualifiedName に
UnitTest1
が含まれ、かつ、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")] があるテストを実行します。 |
条件演算子 |
と &
の使用例:
FullyQualifiedName に
TestClass1
が含まれるか、または、Trait
のキーが"Category"
で値が"CategoryA"
であるテストを実行するには。dotnet test --filter "FullyQualifiedName~TestClass1|Category=CategoryA"
FullyQualifiedName に
TestClass1
が含まれ、かつ、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)] の注釈が付けられているテストを実行します。 |
条件演算子 |
と &
の使用例:
FullyQualifiedName に UnitTest1
が含まれるか、または、Category
が "CategoryA"
であるテストを実行するには。
dotnet test --filter "FullyQualifiedName~UnitTest1|TestCategory=CategoryA"
FullyQualifiedName に UnitTest1
が含まれ、かつ、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