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