선택적 단위 테스트 실행Running 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 test 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:.

MSTestMSTest

using Microsoft.VisualStudio.TestTools.UnitTesting;

namespace MSTestNamespace
{
    [TestClass]
    public class UnitTest1
    {
        [TestCategory("CategoryA")]
        [Priority(1)]
        [TestMethod]
        public void TestMethod1()
        {
        }

        [Priority(2)]
        [TestMethod]
        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 which 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 which are annotated with [TestCategory("CategoryA")].
dotnet test --filter Priority=2 [Priority(2)]로 주석이 추가된 테스트를 실행합니다.Runs tests which are annotated with [Priority(2)].

조건 연산자 | 및 & 사용Using conditional operators | and &

Expression 결과Result
dotnet test --filter "FullyQualifiedName~UnitTest1|TestCategory=CategoryA" FullyQualifiedNameUnitTest1있거나 TestCategoryCategoryA인 테스트를 실행합니다.Runs tests which have UnitTest1 in FullyQualifiedName or TestCategory is CategoryA.
dotnet test --filter "FullyQualifiedName~UnitTest1&TestCategory=CategoryA" FullyQualifiedNameUnitTest1이 있고 TestCategoryCategoryA인 테스트를 실행합니다.Runs tests which have UnitTest1 in FullyQualifiedName and TestCategory is CategoryA.
dotnet test --filter "(FullyQualifiedName~UnitTest1&TestCategory=CategoryA)|Priority=1" UnitTest1을 포함하는 FullyQualifiedName이 있고TestCategoryCategoryA이거나 Priority가 1인 테스트를 실행합니다.Runs tests which have either FullyQualifiedName containing UnitTest1 and TestCategory is CategoryA or Priority is 1.

xUnitxUnit

using Xunit;

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

        [Trait("Priority", "2")]
        [Fact]
        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.

코드 예제에서 CategoryPriority 키로 정의된 특성은 필터링에 사용할 수 있습니다.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 which have [Trait("Category", "CategoryA")].

조건 연산자 | 및 & 사용Using conditional operators | and &

Expression 결과Result
dotnet test --filter "FullyQualifiedName~TestClass1|Category=CategoryA" FullyQualifiedNameTestClass1있거나CategoryCategoryA인 테스트를 실행합니다.Runs tests which has TestClass1 in FullyQualifiedName or Category is CategoryA.
dotnet test --filter "FullyQualifiedName~TestClass1&Category=CategoryA" FullyQualifiedNameTestClass1이 있고 CategoryCategoryA인 테스트를 실행합니다.Runs tests which has TestClass1 in FullyQualifiedName and Category is CategoryA.
dotnet test --filter "(FullyQualifiedName~TestClass1&Category=CategoryA)|Priority=1" TestClass1을 포함하는 FullyQualifiedName이 있고CategoryCategoryA이거나 Priority가 1인 테스트를 실행합니다.Runs tests which have either FullyQualifiedName containing TestClass1 and Category is CategoryA or Priority is 1.

NUnitNUnit

using NUnit.Framework;

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

        [Property("Priority", 2)]
        [Test]
        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 which 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 which are annotated with [Category("CategoryA")].
dotnet test --filter Priority=2 [Priority(2)]로 주석이 추가된 테스트를 실행합니다.Runs tests which are annotated with [Priority(2)].

조건 연산자 | 및 & 사용Using conditional operators | and &

Expression 결과Result
dotnet test --filter "FullyQualifiedName~UnitTest1|TestCategory=CategoryA" FullyQualifiedNameUnitTest1있거나 TestCategoryCategoryA인 테스트를 실행합니다.Runs tests which have UnitTest1 in FullyQualifiedName or TestCategory is CategoryA.
dotnet test --filter "FullyQualifiedName~UnitTest1&TestCategory=CategoryA" FullyQualifiedNameUnitTest1이 있고 TestCategoryCategoryA인 테스트를 실행합니다.Runs tests which have UnitTest1 in FullyQualifiedName and TestCategory is CategoryA.
dotnet test --filter "(FullyQualifiedName~UnitTest1&TestCategory=CategoryA)|Priority=1" UnitTest1을 포함하는 FullyQualifiedName이 있고TestCategoryCategoryA이거나 Priority가 1인 테스트를 실행합니다.Runs tests which have either FullyQualifiedName containing UnitTest1 and TestCategory is CategoryA or Priority is 1.