【问题标题】:Private accessor won't access private member私有访问者不会访问私有成员
【发布时间】:2012-12-20 09:09:31
【问题描述】:

在我的类中,为了测试,我有一个私有布尔实例变量和一个访问它的方法:

MyClass()
{
    private volatile bool b;
    public MyMethod()
    {
         b = false;
    }
}

为方法创建单元测试后

[TestMethod()]
public void MyMethodTest()
{
      PrivateObject param0 = new PrivateObject(new MyClass());
      MyClass_Accessor target = new MyClass_Accessor(param0);
      target.b = false;
}

我收到此错误:

Property, indexer, or event 'property' is not supported by the language; try directly
calling accessor method 'accessor_taketh' 'accessor_giveth'

但是在访问器对象中没有这样的方法,而是有

[Shadowing("b")]
public bool b{ get; set; }

那么为什么我会收到错误消息?

【问题讨论】:

  • 您在几分钟前问了同样的问题并删除了。你怎么又问了?
  • 对不起,我以为我收到了错误但我错了它仍然存在
  • 什么是PrivateObjectMyClass_Accessor
  • 你研究过compiler error information吗?
  • 您说您的bool b 是全局的,但在您显示的代码中它不是全局的。您真的发布了所有代码吗?

标签: c# visual-studio-2010 unit-testing private-members


【解决方案1】:

这个呢:

 param0.SetField("b", false);

【讨论】:

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