加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

属性不能在C/C++LI中重复,但在C#中可以正常吗?

发布时间:2020-12-16 10:39:50 所属栏目:百科 来源:网络整理
导读:我收到错误C3095:’Xunit :: Extensions :: InlineDataAttribute’:属性不能在C/C++LI代码中重复,但不能在C#中重复. xUnit.net看起来像是我祈祷的答案 – 一个现代的单元测试框架,GUI使用C/C++LI.但是,使用他们的参数化测试方法给出了错误C3095,如下所示.
我收到错误C3095:’Xunit :: Extensions :: InlineDataAttribute’:属性不能在C/C++LI代码中重复,但不能在C#中重复.

xUnit.net看起来像是我祈祷的答案 – 一个现代的单元测试框架,GUI使用C/C++LI.但是,使用他们的参数化测试方法给出了错误C3095,如下所示.

有任何想法吗?

我正在使用最新的xUnit.net 1.6和Visual Studio 2008SP1.

using namespace Xunit;
using namespace Xunit::Extensions;

public ref class ParameterisedTestClass
{
public:

    [Theory]
    [InlineData("Kilroy",6)]
    // uncomment to cause c3095 [InlineData("Jones",5)]
    void PropTest(String^ msg,int msgLen)
    {
        Assert::Equal(msg->Length,msgLen);
    }
};

C#中的等价物很好

using Xunit;
using Xunit.Extensions;

public  class ParameterisedTestClass
{

    [Theory]
    [InlineData("Kilroy",6)]
    [InlineData("Jones",5)]
    public void PropTest(String msg,int msgLen)
    {
        Assert.Equal(msg.Length,msgLen);
    }
};

解决方法

嗯……我看了defs here和 here,并在下面复制了它们(剪下来);通过DataAttribute继承AllowMultiple在C#中工作正常:

class Test
{
    [InlineData]
    [InlineData]
    static void Main() { }
}

[AttributeUsage(AttributeTargets.Method,AllowMultiple = true,Inherited = true)]
class DataAttribute : Attribute {}

class InlineDataAttribute : DataAttribute { }

因此,如果它不适用于C/C++LI,我猜C/C++LI根本就不处理隐含的[AttributeUsage].您应该针对Xunit提出请求,要求他们在InlineDataAttribute上显式显示[AttributeUsage].

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读