【问题标题】:Private Accessors in Visual Studio 2012Visual Studio 2012 中的私有访问器
【发布时间】:2012-07-06 21:06:48
【问题描述】:

据我所知,Visual Studio 2012 不支持私有访问器。你能给我一些关于可能的替代方案的信息吗? PrivateObject.Invoke() 对我来说不是最好的解决方案。

提前谢谢你!

【问题讨论】:

    标签: .net unit-testing visual-studio-2012 private-members


    【解决方案1】:

    将您的成员标记为“内部”并使用 InternalsVisibleTo 属性。使用简单,没有类型安全问题。

    【讨论】:

    • 在引入私人电子访问器之前,我已经这样做了。谢谢!
    • 有趣的是,许多 .NET Framework 程序集在 Reflector 中显示 InternalsVisibleTo 属性。
    • Fakes 框架似乎存在问题。即使 InternalsVisibleTo 设置正确,您也无法填充内部类。 PrivateObject.Invoke 也不是一个真正的选择。可悲的是,在删除对访问器的支持时,他们删除了一种用于填充内部类的方法。
    【解决方案2】:

    也许这个帖子Home-made Private Accessor for Visual Studio 2012+ 将帮助您创建自己的私人访问器。

    问候,

    斯蒂芬

    【讨论】:

    【解决方案3】:

    我开始使用 Dynamic Private Accessor 功能,它是 nuget 包 Chaining Assertion for MSTest 的一部分,我对此非常满意。一个失去强类型,但至少语法仍然可读。 这适用于 动态 功能。还有其他测试框架的包。 测试代码如下所示:

    var target = CreateMyObjectUnderTest();
    dynamic dynamicTarget = target.AsDynamic();
    Assert.AreEqual("abc", dynamicTarget.MyPrivateProperty);
    Assert.AreEqual("xyz", dynamicTarget.PrivateMethod(123));
    

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2016-11-09
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多