선택적 단위 테스트 실행Run selective unit tests

.NET Core에서 dotnet test 명령과 함께 필터 식을 사용하여 선택적 테스트를 실행할 수 있습니다.With the dotnet test command in .NET Core, you can use a filter expression to run selective tests. 이 문서에서는 실행되는 테스트를 필터링하는 방법을 보여 줍니다.This article demonstrates how to filter which tests are run. 다음 예제에서는 dotnet test를 사용합니다.The following examples use dotnet test. vstest.console.exe를 사용하는 경우 --filter--testcasefilter:로 바꾸세요.If you're using vstest.console.exe, replace --filter with --testcasefilter:.

문자 이스케이프Character escaping

*nix에서 느낌표(!)를 포함하는 필터를 사용하려면 이스케이프해야 합니다. !가 예약되어 있기 때문입니다.Using filters that include exclamation mark ! on *nix requires escaping since ! is reserved. 예를 들어 다음 필터는 네임스페이스에 IntegrationTests가 포함되어 있으면 모든 테스트를 건너뜁니다.For example, this filter skips all tests if the namespace contains IntegrationTests:

dotnet test --filter FullyQualifiedName\!~IntegrationTests

중요

이스케이프된 문자임을 나타내기 위해 느낌표 앞에 백슬래시가 나옵니다(\!).The backslash precedes the exclamation mark to indicate it is an escaped character \!.

제네릭 형식 매개 변수의 쉼표를 포함하는 FullyQualifiedName 값의 경우 %2C를 사용하여 쉼표를 이스케이프합니다.For FullyQualifiedName values that include a comma for generic type parameters, escape the comma with %2C. 예를 들어:For example:

dotnet test --filter "FullyQualifiedName=MyNamespace.MyTestsClass<ParameterType1%2CParameterType2>.MyTestMethod"
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()
        {
        }
    }
}
Expression 결과Result
dotnet test --filter Method FullyQualifiedNameMethod가 포함된 테스트를 실행합니다.Runs tests whose FullyQualifiedName contains Method. vstest 15.1+에서 사용 가능합니다.Available in vstest 15.1+.
dotnet test --filter Name~TestMethod1 이름에 TestMethod1이 포함된 테스트를 실행합니다.Runs tests whose name contains TestMethod1.
dotnet test --filter ClassName=MSTestNamespace.UnitTest1 MSTestNamespace.UnitTest1 클래스에 있는 테스트를 실행합니다.Runs tests that are in class MSTestNamespace.UnitTest1.
참고: ClassName 값에는 네임스페이스가 있어야 하므로, ClassName=UnitTest1이 작동하지 않습니다.Note: The ClassName value should have a namespace, so ClassName=UnitTest1 won't work.
dotnet test --filter FullyQualifiedName!=MSTestNamespace.UnitTest1.TestMethod1 MSTestNamespace.UnitTest1.TestMethod1을 제외한 모든 테스트를 실행합니다.Runs all tests except MSTestNamespace.UnitTest1.TestMethod1.
dotnet test --filter TestCategory=CategoryA [TestCategory("CategoryA")]로 주석이 달린 테스트를 실행합니다.Runs tests that are annotated with [TestCategory("CategoryA")].
dotnet test --filter Priority=2 [Priority(2)]로 주석이 달린 테스트를 실행합니다.Runs tests that are annotated with [Priority(2)].

조건부 연산자 |&를 사용하는 예는 다음과 같습니다.Examples using the conditional operators | and &:

FullyQualifiedNameUnitTest1가 포함되거나 또는 TestCategoryAttribute"CategoryA"인 테스트를 실행하는 경우.To run tests that have UnitTest1 in their FullyQualifiedName or TestCategoryAttribute is "CategoryA".

dotnet test --filter "FullyQualifiedName~UnitTest1|TestCategory=CategoryA"

FullyQualifiedNameUnitTest1이 포함되면서 TestCategoryAttribute"CategoryA"인 테스트를 실행하는 경우.To run tests that have UnitTest1 in their FullyQualifiedName and have a TestCategoryAttribute of "CategoryA".

dotnet test --filter "FullyQualifiedName~UnitTest1&TestCategory=CategoryA"

FullyQualifiedNameUnitTest1이 포함되면서 TestCategoryAttribute"CategoryA"이거나, 또는 PriorityAttribute의 우선 순위가 1인 테스트를 실행하는 경우.To run tests that have either FullyQualifiedName containing UnitTest1 and have a TestCategoryAttribute of "CategoryA" or have a PriorityAttribute with a priority of 1.

dotnet test --filter "(FullyQualifiedName~UnitTest1&TestCategory=CategoryA)|Priority=1"
using Xunit;

namespace XUnitNamespace
{
    public class TestClass1
    {
        [Fact, Trait("Priority", "1"), Trait("Category", "CategoryA")]
        public void Test1()
        {
        }

        [Fact, Trait("Priority", "2")]
        public void Test2()
        {
        }
    }
}
Expression 결과Result
dotnet test --filter DisplayName=XUnitNamespace.TestClass1.Test1 XUnitNamespace.TestClass1.Test1 테스트를 하나만 실행합니다.Runs only one test, XUnitNamespace.TestClass1.Test1.
dotnet test --filter FullyQualifiedName!=XUnitNamespace.TestClass1.Test1 XUnitNamespace.TestClass1.Test1을 제외한 모든 테스트를 실행합니다.Runs all tests except XUnitNamespace.TestClass1.Test1.
dotnet test --filter DisplayName~TestClass1 표시 이름에 TestClass1이 포함된 테스트를 실행합니다.Runs tests whose display name contains TestClass1.

코드 예제에서 "Category""Priority" 키로 정의된 특성은 필터링에 사용할 수 있습니다.In the code example, the defined traits with keys "Category" and "Priority" can be used for filtering.

Expression 결과Result
dotnet test --filter XUnit FullyQualifiedNameXUnit가 포함된 테스트를 실행합니다.Runs tests whose FullyQualifiedName contains XUnit. vstest 15.1+에서 사용 가능합니다.Available in vstest 15.1+.
dotnet test --filter Category=CategoryA [Trait("Category", "CategoryA")]가 있는 테스트를 실행합니다.Runs tests that have [Trait("Category", "CategoryA")].

조건부 연산자 |&를 사용하는 예는 다음과 같습니다.Examples using the conditional operators | and &:

FullyQualifiedNameTestClass1이 포함되거나 또는 "Category" 키의 값이 "CategoryA"Trait가 있는 테스트를 실행하는 경우.To run tests that have TestClass1 in their FullyQualifiedName or have a Trait with a key of "Category" and value of "CategoryA".

dotnet test --filter "FullyQualifiedName~TestClass1|Category=CategoryA"

FullyQualifiedNameTestClass1이 포함되면서 "Category" 키의 값이 "CategoryA"Trait가 있는 테스트를 실행하는 경우.To run tests that have TestClass1 in their FullyQualifiedName and have a Trait with a key of "Category" and value of "CategoryA".

dotnet test --filter "FullyQualifiedName~TestClass1&Category=CategoryA"

FullyQualifiedNameTestClass1이 포함되면서 "Category" 키의 값이 "CategoryA"Trait가 있거나, 또는 "Priority" 키의 값이 1Trait가 있는 테스트를 실행하는 경우.To run tests that have either FullyQualifiedName containing TestClass1 and have a Trait with a key of "Category" and value of "CategoryA" or have a Trait with a key of "Priority" and value of 1.

dotnet test --filter "(FullyQualifiedName~TestClass1&Category=CategoryA)|Priority=1"
using NUnit.Framework;

namespace NUnitNamespace
{
    public class UnitTest1
    {
        [Test, Property("Priority", 1), Category("CategoryA")]
        public void TestMethod1()
        {
        }

        [Test, Property("Priority", 2)]
        public void TestMethod2()
        {
        }
    }
}
Expression 결과Result
dotnet test --filter Method FullyQualifiedNameMethod가 포함된 테스트를 실행합니다.Runs tests whose FullyQualifiedName contains Method. vstest 15.1+에서 사용 가능합니다.Available in vstest 15.1+.
dotnet test --filter Name~TestMethod1 이름에 TestMethod1이 포함된 테스트를 실행합니다.Runs tests whose name contains TestMethod1.
dotnet test --filter FullyQualifiedName~NUnitNamespace.UnitTest1 NUnitNamespace.UnitTest1 클래스에 있는 테스트를 실행합니다.Runs tests that are in class NUnitNamespace.UnitTest1.
dotnet test --filter FullyQualifiedName!=NUnitNamespace.UnitTest1.TestMethod1 NUnitNamespace.UnitTest1.TestMethod1을 제외한 모든 테스트를 실행합니다.Runs all tests except NUnitNamespace.UnitTest1.TestMethod1.
dotnet test --filter TestCategory=CategoryA [Category("CategoryA")]로 주석이 달린 테스트를 실행합니다.Runs tests that are annotated with [Category("CategoryA")].
dotnet test --filter Priority=2 [Priority(2)]로 주석이 달린 테스트를 실행합니다.Runs tests that are annotated with [Priority(2)].

조건부 연산자 |&를 사용하는 예는 다음과 같습니다.Examples using the conditional operators | and &:

FullyQualifiedNameUnitTest1이 포함되거나 또는 Category"CategoryA"인 테스트를 실행하는 경우.To run tests that have UnitTest1 in their FullyQualifiedName or have a Category of "CategoryA".

dotnet test --filter "FullyQualifiedName~UnitTest1|TestCategory=CategoryA"

FullyQualifiedNameUnitTest1이 포함되면서 Category"CategoryA"인 테스트를 실행하는 경우.To run tests that have UnitTest1 in their FullyQualifiedName and have a Category of "CategoryA".

dotnet test --filter "FullyQualifiedName~UnitTest1&TestCategory=CategoryA"

FullyQualifiedNameUnitTest1이 포함되면서 Category"CategoryA"이거나, 또는 "Priority"의 값이 1Property가 있는 테스트를 실행하는 경우.To run tests that have either a FullyQualifiedName containing UnitTest1 and have a Category of "CategoryA" or have a Property with a "Priority" of 1.

dotnet test --filter "(FullyQualifiedName~UnitTest1&TestCategory=CategoryA)|Priority=1"

자세한 내용은 TestCase 필터를 참조하세요.For more information, see TestCase filter.

참조See also

다음 단계Next steps