ASP.Net 堆栈中的 InlineData 属性如何工作?

How InlineData attribute in ASP.Net Stack work?

出于好奇,我下载了开源项目asp.net-webstack 来查看源代码。我在 C# 中找到了单元测试,如下所示:

// Copyright (c) Microsoft Open Technologies, Inc. All rights reserved. See License.txt in the project root for license information.

using System.Net.Http;
using Microsoft.TestCommon;

namespace System.Web.Http.Routing
{
    public class HttpRouteTest
    {
        [Theory]
        [InlineData("123 456")]
        [InlineData("123 {456")]
        [InlineData("123 [45]6")]
        [InlineData("123 (4)56")]
        [InlineData("abc+56")]
        [InlineData("abc.56")]
        [InlineData("abc*56")]
        [InlineData(@"hello12.1[)]*^$=!@23}")]
        public void GetRouteData_HandlesUrlEncoding(string id)
        {
            HttpRoute route = new HttpRoute("{controller}/{id}");
            Uri uri = new Uri("http://localhost/test/" + id + "/");
            IHttpRouteData routeData = route.GetRouteData("", new HttpRequestMessage(HttpMethod.Get, uri));
            Assert.Equal("test", routeData.Values["controller"]);
            Assert.Equal(id, routeData.Values["id"]);
        }
    }
}

我如何 运行 这个测试来自 Visual Studio?没有 TestMethod 和 TestClass 属性。上下文菜单中的标准执行不起作用。

在 C# 中 运行 再次对多个数据集进行单元测试是否有一些聪明的方法?

据我所知,InlineData 是一个 xUnit 测试属性。

在 Visual Studio(2012 年或更高版本)中实现此功能的原因是 xUnit 测试适配器(即 NuGet 包 xunit.runner.visualstudio)在引用 xUnit 添加了 NuGet 包。

这里有一个 link 更多细节:

在 xUnit v2 中,xUnit 的 NuGet 包包括对 NuGet (xunit.runner.visualstudio) 的引用,这使得 VS2012+ 中的 VS 运行器可以发现测试。有关概述,请参阅 xUnit docs