.NET Core에서 dotnet test 명령과 함께 필터 식을 사용하여 선택한 테스트를 실행할 수 있습니다. 이 문서에서는 테스트를 필터링하는 방법을 보여줍니다. 이 예제에서는 dotnet test를 사용합니다.
vstest.console.exe를 사용하는 경우 --filter를 --testcasefilter:로 바꾸세요.
구문
dotnet test --filter <Expression>
식은
<Property><Operator><Value>[|&<Expression>]형식입니다.식은 부울 연산자(부울
|의 경우 , 부울&의 경우 )와 조인할 수 있습니다.식은 괄호로 묶을 수 있습니다. 예:
(Name~MyClass) | (Name~MyClass2)연산자가 없는 식은 속성에 대한
FullyQualifiedName로 해석됩니다. 예를 들어dotnet test --filter xyz은dotnet test --filter FullyQualifiedName~xyz과 같습니다.속성은
Test Case의 특성입니다. 예를 들어 다음 속성은 인기 있는 단위 테스트 프레임워크에서 지원됩니다.테스트 프레임워크 지원되는 속성 MSTest FullyQualifiedNameNameClassNamePriorityTestCategoryxUnit FullyQualifiedNameDisplayNameTraitsNunit FullyQualifiedNameNamePriorityTestCategory연산자
-
=정확히 일치 -
!=정확하게 일치하지 않음 -
~포함 -
!~포함 안 함
-
값은 문자열입니다. 모든 조회는 대/소문자를 구분합니다.
문자 이스케이프
필터 식에서 느낌표(!)를 사용하려면 일부 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 테스트를 하나만 실행합니다. |
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