创建一个Accessor列表会抛出ArgumentException

时间:2011-12-13 13:50:02

标签: c# unit-testing runtimeexception

创建访问者列表时出现非常奇怪的错误 我有一个Component课,其中包含Component个私人列表。由于我想测试关于此列表的一些类行为,因此我使用Component类的访问器。此外,我在我想避免的类的构造函数中有一些依赖项。因此,我在TestInitialize() - 方法

中手动实例化列表

TestInitialize() - 代码如下所示:

private string _testIdentifier = "TestComponent";
private int _testConsist = 1;

private Component_Accessor _target;

[TestInitialize()]
    public void MyTestInitialize()
    {
        _target = new Component_Accessor();
        _target.Identifier = new ComponentIdentifier(_testIdentifier, _testConsist);
        _target._inputComponents = new List<Component_Accessor>();
        _target._outputComponents = new List<Component_Accessor>();
    }

Accessor-Code看起来像这样:

[Shadowing("_inputComponents")]  
public List<Component_Accessor> _inputComponents { get; set; }

这编译得很好,但我得到一个RunTimeException:

  

“System.Collections.Generic.List'1 [DT5_Training_Simulator.Model.Components.Component_Accessor]”类型的对象无法转换为“System.Collections.Generic.List'1 [DT5_Training_Simulator.Model]类型。 Components.Component]“

其实我在这里很茫然。有谁能告诉我我做错了什么?

1 个答案:

答案 0 :(得分:0)

您不能将Shadowing属性与公共成员一起使用,因为它会使测试人员感到困惑。根据{{​​3}},Shadowing用于测试私有属性和方法,就好像它们是公开的一样。您的媒体资源已公开,因此您需要从声明中删除Shadowing