如何测试抽象类和其中的 protected 方法?我知道有些人会建议我不应该测试抽象类,而应该测试从它派生的类。事实是,我不想这样做。我想严格测试抽象类本身。这是示例类:

public interface IF_SystemMessageHandler
{
    ...
}

public interface IF_SystemMessageSender
{
    ...
}

    public abstract class Component : IF_SystemMessageSender
    {

        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;
        }

        protected void SendSystemMessage(ref eSystemMsgLevel inSystemMsgLevel, ref string inSysMsg)
        {
            mLogger.SendSystemMessage(...);
        }

        protected void SendSystemMessage(ref eSystemMsgLevel inSystemMsgLevel, ref eTextId inSysMsgID)
        {
            mLogger.SendSystemMessage(...);
        }

        public void SetMessageHandler(ref IF_SystemMessageHandler InSystemMessageHandler)
        {
            mLogger = InSystemMessageHandler;
        }

    }

我正在为此编写单元测试。我知道我可以做的一件事是利用单元测试框架(我有Moq),但是我不知道如何在特定实例中使用它。

最佳答案

为了测试抽象类,您需要实例化它。因此,创建一个用于测试目的的类,该类继承自Component(抽象)类。

除了正在使用的接口(interface)之外,我对Mock的看法并不多。

关于c# - 单元测试抽象类和其中的 protected 方法,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/13908106/

10-09 19:25