gpt4 book ai didi

c# - Ping/PingReply 的单元测试 - 模拟?

转载 作者:行者123 更新时间:2023-11-30 16:25:16 24 4
gpt4 key购买 nike

我希望找到一种方法来对我的 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 接口(interface)并将 Ping 变成 IPing 并为此添加另一个构造函数和一堆工作之外,是否有一种方法可以轻松地对此进行单元测试,或者我不应该浪费时间吗?

最佳答案

听起来您已经知道一种使代码可测试的好方法:依赖抽象。不要使用 Ping , 使用 IPing , 并且有 IPing通过构造函数提供给将要使用它的类。

查看像 Ninject 这样的 IOC 容器让您的生活更轻松,尤其是当您连接大量依赖项时。

至于是否应该,我对“我应该让这段代码可测试并为其编写测试”的回答总是响亮的

这样想:你有这个方法,IsOnline(string machineName) .假设您正在其他地方编写代码,并且您想要测试该代码。但是该代码使用 IsOnline !突然间,测试变得更难了。如果您可以模拟您的 ping 提供类,那么测试它就会变得轻而易举。

关于c# - Ping/PingReply 的单元测试 - 模拟?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10115168/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com