如何在VB.Net中禁用测试期间的ping?

如何在VB.Net中禁用测试期间的ping?,vb.net,visual-studio,ping,Vb.net,Visual Studio,Ping,我有一个类,它使用My.Computer.Network.Ping获取关于IP地址或主机名是否可访问的布尔值 但是,当我测试该类时,我想禁用Ping,以便在测试期间,每当我运行My.Computer.Network.Ping时,它总是返回false或抛出某种异常 我尝试了以下操作,但仍然返回了true(也就是说,禁用ping的尝试不起作用) 有什么想法吗? 编辑:'m将VS2010与.NET4.0框架一起使用(完整) 您也可以尝试修改主机文件(假设您使用的是主机名而不是IP地址),但这似乎是一种

我有一个类,它使用
My.Computer.Network.Ping
获取关于IP地址或主机名是否可访问的布尔值

但是,当我测试该类时,我想禁用Ping,以便在测试期间,每当我运行
My.Computer.Network.Ping
时,它总是返回
false
或抛出某种异常

我尝试了以下操作,但仍然返回了
true
(也就是说,禁用ping的尝试不起作用)

有什么想法吗? 编辑:'m将VS2010与.NET4.0框架一起使用(完整)


您也可以尝试修改主机文件(假设您使用的是主机名而不是IP地址),但这似乎是一种相当丑陋的方法保罗B.6月9日15:02

保罗B的回答对我有帮助。我正在Win7和XP上进行测试,但是XP在使用主机文件方法时似乎很挑剔。在Win7上运行良好


Paul就是那个人。

创建一个班上进行ping的moq?如果可以,请使用拦截?当设置命令行参数、环境变量、注册表值等时,是否可以修改代码以返回
false
,并让您的测试方法以这种方式禁用ping?@PaulB。我可以,但我真的希望在测试中使用它,并将类单独保留。您也可以尝试修改主机文件(假设您使用的是主机名而不是IP地址),但这似乎是一种相当丑陋的方法。。。
Dim restricited As New System.Net.NetworkInformation.NetworkInformationPermission(System.Security.Permissions.PermissionState.None)
    Dim mySocketPermission1 As New SocketPermission(PermissionState.None)
    Dim myWebPermission As New WebPermission(PermissionState.None)
    myWebPermission.Demand()
    mySocketPermission1.Demand()
    Dim ping As New PingOptions()
    ping.DontFragment = True
    ping.Ttl = 1

*attempt to ping here*
*but doesn't return the "ping failed" I wanted*