Cing-Ping / PingReply的单元测试-模拟吗?
作者:互联网
我希望找到一种方法来对我的ping功能进行单元测试,或者能够与RhinoMocks进行模拟
这是我希望能够进行单元测试的代码的简单示例:
public PingReply PingMachine(string machineName)
{
Ping ping = new Ping();
return ping.Send(machineName);
}
public bool IsOnline(string machineName)
{
var reply = PingMachine(machineName);
if (reply.Status == IPStatus.Success)
{
return true;
}
return false;
}
除了创建自己的IPing接口并将Ping引入IPing并为此添加另一个构造函数和大量工作之外,还有没有一种方法可以轻松地对此进行单元测试,还是我不应该浪费时间?
解决方法:
听起来您已经知道一种使代码可测试的好方法:依赖抽象.不要使用Ping,而是使用IPing,并通过构造函数将IPing提供给将要使用它的类.
查看一个像Ninject这样的IOC容器可以使您的生活更轻松,尤其是当您连接大量依赖项时.
至于是否应该,我对“我应该使此代码可测试并为其进行测试”的回答始终是肯定的.
可以这样认为:您具有IsOnline(string machineName)这个方法.假设您正在其他地方编写代码,并且想要测试该代码.但是该代码使用了IsOnline!突然,测试变得更加困难.如果您可以模拟提供ping的类,那么进行测试就很容易了.
标签:unit-testing,mstest,c,visual-studio,rhino-mocks 来源: https://codeday.me/bug/20191201/2081157.html