繁体   English   中英

如何在C#中的单元/集成测试中模拟“无Internet连接”

[英]How to simulate “No Internet Connection” in Unit/Integration test in C#

我有一个组件(部分)使用互联网连接。 我写了一些UnitTests来确保组件正常工作。 但是,我想测试没有Internet连接的组件的行为。

所以,我的目标是以某种方式临时禁用互联网,或整个互联网连接,并在测试后重新激活。

我会在测试初始化​​中禁用\\ enable 就像这里本地连接一样

[ClassInitialize]
SelectQuery wmiQuery = new SelectQuery("SELECT * FROM Win32_NetworkAdapter WHERE NetConnectionId != NULL");
ManagementObjectSearcher searchProcedure = new ManagementObjectSearcher(wmiQuery);
foreach (ManagementObject item in searchProcedure.Get())
{
    if (((string)item["NetConnectionId"]) == "Local Network Connection")
    {
       item.InvokeMethod("Disable", null);
    }
}

 [ClassCleanup()]
 // Enable local area connetcion

虽然不是您问题的直接答案,但我相信您可能会在此工具中找到一些用途 - https://jagt.github.io/clumsy/download

我在工作中使用它来模拟我正在处理的移动应用程序的不同网络条件。 通过将数据包丢弃设置为100%,可以完全禁用网络连接。

系统可以通过多种方式实现“无互联网”,而答案实际上取决于您的意思。

正如公认的其他答案所示,您可以简单地禁用网络接口。 这保证你没有互联网,但计算机也会知道它也没有网络。

还有其他几种选择

  1. 要删除默认网关(这可能需要在控制面板中设置静态IP设置,但我确信您也可以通过编程方式进行设置

这样,计算机仍然连接它的东西,但除了在本地子网上之外它不会有任何网络访问

  1. 删除DNS服务器设置,请参阅上面的链接。

这样,计算机具有基于IP的直接访问权限,但对于普通用户而言,它看起来好像存在“没有互联网”。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM