我正在为抽象类创建单元测试代码。这是该类的片段:
public abstract class Component
{
private eVtCompId mComponentId;
private eLayer mLayerId;
private IF_SystemMessageHandler mLogger;
protected Component(eVtCompId inComponentId, eLayer inLayerId, IF_SystemMessageHandler inMessageHandler)
{
mLayerId = inLayerId;
mComponentId = inComponentId;
mLogger = inMessageHandler;
}
我在构造函数的参数中有两个枚举后跟一个接口。
以下是我的单元测试代码的片段:
Component_Accessor target = new Component_Accessor(eVtCompId.MasterSWCommDevice, eLayer.Foundation, new MySysMsgHandler());
我不断收到错误消息“Component_Accessor不包含带'3'参数的构造函数”。我似乎无法理解为什么会这样。当我删除abstract
关键字时,单元测试工作正常。
我不明白为什么如果类设置为abstract
,单元测试似乎无法“看到”构造函数。任何人都可以解释为什么会这样吗?提前谢谢。
答案 0 :(得分:2)
您无法创建abstract
类的实例。 protected
构造函数仅对派生类可见。阅读Accessibility Levels (C# Reference)以清除访问修饰符之间的差异及其在各种(包括类)范围内的影响。
来自MSDN:
在类声明中使用abstract修饰符来表示a class只是作为其他类的基类。
此外,Component
和Component_Accessor
肯定是不同的类型。