其他分享
首页 > 其他分享> > Cing-Ping / PingReply的单元测试-模拟吗?

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