我计划使用Moq来模拟我创建的单元测试代码中的一些接口.我已经下载了最新版本的Moq.
我的问题是,如何"安装"它?我应该在哪里放置Moq.dll?
我试过在互联网上搜索,但我能找到的只是如何使用Moq的样本,而不是如何安装它.
我如何在其中测试抽象类和受保护的方法?我知道有些人会建议我不要测试抽象类,而是测试从它派生的类.事情是,我不想这样做.我想严格测试抽象类本身.这是示例类:
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;
}
} …Run Code Online (Sandbox Code Playgroud) 我目前正在为一个抽象类创建一个单元测试,称为Component.VS2008编译我的程序没有问题所以我能够在解决方案中创建一个单元测试项目.但是,我注意到的一件事是,当创建测试文件时,有一些我以前从未见过的方法:
internal virtual Component CreateComponent()
{
// TODO: Instantiate an appropriate concrete class.
Component target = null;
return target;
}
internal virtual Component_Accessor CreateComponent_Accessor()
{
// TODO: Instantiate an appropriate concrete class.
Component_Accessor target = null;
return target;
}
Run Code Online (Sandbox Code Playgroud)
我认为这些是用于创建一个具体的Component类.
在每个Test方法中,都有这一行:
Component target = CreateComponent(); // TODO: Initialize to an appropriate value
如何将其初始化为适当的值?或者,我如何实例化一个适当的具体类,如上所述CreateComponent和CreateComponent_Accessor方法?
这里是抽象类的构造函数,有关其他信息:
protected Component(eVtCompId inComponentId, eLayer inLayerId, IF_SystemMessageHandler inMessageHandler)
我正在使用C#读取XML文件并计算XML标记中有多少"元素",例如......
<Languages>English, Deutsche, Francais</Languages>
Run Code Online (Sandbox Code Playgroud)
Languages标签内有3个"元素":英语,德语和法语.我需要知道如何计算它们并返回有多少元素的值.标签的内容有可能随着时间的推移而变化,因为XML文件必须扩展/容纳其他语言(只要需要).
如果无法做到这一点,请建议解决问题的方法.谢谢.
编辑:我没有提出读取XML文件的代码,但我也有兴趣学习如何.
编辑2:对问题进行了修订