どのように抽象クラスとその内部のメソッドをテストできますか?あなたの中には、抽象クラスをテストするべきではなく、むしろそのクラスから派生したクラスをテストするべきであることを示唆している方もいらっしゃいます。私はそれをしたくありません。抽象クラス自体を厳密にテストしたい。ここにサンプルクラスがあります:ユニット内で抽象クラスとその内部の保護されたメソッドをテストする
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;
}
}
私はユニットテストを書いています。私ができることの1つはユニットテストフレームワーク(私はMoqを持っている)を利用することですが、私はこの特定のインスタンスのためにそれをどのように使用するかについて考えていません。
コード用の名誉です。この回答は@ulisesよりはるかに優れています –