属性不能在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]. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |