【问题标题】:How InlineData attribute in ASP.Net Stack work?ASP.Net Stack 中的 InlineData 属性如何工作?
【发布时间】:2016-05-03 14:33:42
【问题描述】:

我下载了开源项目 asp.net-webstack 只是出于好奇查看源代码。我在 C# 中找到了这样的 unittest:

// 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# 中对多个数据集运行单元测试是一种聪明的方法吗?

【问题讨论】:

  • 这只是一个 xUnit 测试。我不知道您使用的是哪种“标准执行”,但如果您有 xUnit 测试运行器,应该没问题。

标签: c# unit-testing xunit.net


【解决方案1】:

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

在 Visual Studio(2012 或更高版本)中进行这项工作的原因在于,当添加对 xUnit NuGet 包的引用时,xUnit 测试适配器(即 NuGet 包 xunit.runner.visualstudio)被连接到测试项目中。

这是一个包含更多详细信息的链接:

【讨论】:

  • 现在不再是这种情况了,对于 VS 2015 的定义,但我想也适用于早期版本 - 你实际上是 instructed to remove that plugin in the troubleshooting section of the Desktop - xunit.github.io/docs/getting-started-dnx.html 是一个更好的链接
  • 这是指卸载旧的 VSIX 安装版本。您应该使用 Nuget 包作为我引用的帖子和您的链接以及指示。
  • 抱歉,我刚刚发现您的帖子具有误导性 - 3 年多以来,一个人必须明确安装一个插件,而您似乎在暗示这样一个程序(我承认您没有具体说明)。如果您认为这会使事情变得更糟,请随时回滚我的编辑:)
  • 不,我认为这些 cmets 有助于澄清。感谢您的意见!
【解决方案2】:

在 xUnit v2 中,xUnit 的 NuGet 包包含对 NuGet (xunit.runner.visualstudio) 的引用,它使 VS2012+ 中的 VS 运行程序可以发现测试。请参阅xUnit docs 了解概览。

【讨论】:

猜你喜欢
  • 2016-05-03
  • 1970-01-01
  • 2011-04-30
  • 2013-03-28
  • 2015-02-27
  • 2011-02-10
  • 2011-07-10
  • 2012-04-22
  • 1970-01-01
相关资源
最近更新 更多