C# 用于单元测试的TestSettings网络仿真

C# 用于单元测试的TestSettings网络仿真,c#,visual-studio,unit-testing,C#,Visual Studio,Unit Testing,我想利用网络仿真来模拟单元测试中的各种网络速度和数据包丢失率。我正试图结合不同的丢包率对我的网络层进行基准测试。我已经按照这里的说明进行了操作,但仍然很难让它正常工作 我尝试过通过环回连接127.0.0.1进行测试,以及从单元测试下载远程文件。在这两种情况下,网络速度都不会降低 这是使用Visual Studio 2013 Premium 如何使网络仿真设置与单元测试一起工作?要使其工作: 如果计划通过环回连接来测试同一台计算机上的客户端/服务器之间的连接,则必须首先安装Microsoft

我想利用网络仿真来模拟单元测试中的各种网络速度和数据包丢失率。我正试图结合不同的丢包率对我的网络层进行基准测试。我已经按照这里的说明进行了操作,但仍然很难让它正常工作

我尝试过通过环回连接127.0.0.1进行测试,以及从单元测试下载远程文件。在这两种情况下,网络速度都不会降低

这是使用Visual Studio 2013 Premium

如何使网络仿真设置与单元测试一起工作?

要使其工作:

  • 如果计划通过环回连接来测试同一台计算机上的客户端/服务器之间的连接,则必须首先安装Microsoft环回适配器。如果以后忘记/改变主意,请参阅稍后的“回送”部分
  • 以管理员身份运行Visual Studio 2013 Premium(我认为使用testsettings需要Visual Studio Ultimate、Visual Studio Premium或Visual Studio Test Professional)
  • 创建testsettings文件(解决方案->添加项)
    • 双击该文件以打开“测试设置”对话框
    • 选择左侧的数据和诊断
    • 选择网络仿真,单击配置,设置56kpb调制解调器(我们将使用慢速网络仿真来帮助验证仿真是否正常工作,您可以稍后更改)
    • 从测试设置对话框中单击应用。将提示安装网络绑定。(如果未运行Visual Studio,此操作将失败)它将自动安装到所有网络绑定
  • 从主菜单测试->测试设置->选择测试设置文件中选择文件
  • 确保在测试->测试设置下未选中“保持测试执行引擎运行”。我认为检查此项会导致引擎无法接收我们所做的所有更改,因为它从未关闭/开始重新加载更改
以前下载一个图像文件不到一秒钟,现在使用56kbps的模拟几乎需要一分钟:

[TestMethod]
public void TestMethod1()
{
    string page = "http://upload.wikimedia.org/wikipedia/commons/5/53/Wikipedia-logo-en-big.png";

    // ... Use HttpClient.
    using (HttpClient client = new HttpClient())
    {
       byte[] result  = client.GetByteArrayAsync(page).Result;
       Console.WriteLine("length" + result.Length);              
    }
}
修改网络仿真设置 testsettings GUI仅提供少数网络配置文件。如果在Notepad++中以XML文件的形式打开testsettings文件,则可以调整网络设置并调整数据包丢失/延迟以测试各种场景

环回 您不能使用127.0.0.1,因为它在性能方面绕过了大部分网络层,包括绕过仿真器。安装Microsoft环回适配器会添加一个接口,该接口具有自己的IP地址,模拟器驱动程序可以绑定到该地址

如果在完成上述绑定网络仿真驱动程序的过程后安装了Microsoft环回适配器,则它仅绑定到现有接口。要绑定到新安装的接口,必须卸载并重新安装网络仿真驱动程序。从开始->程序->Visual Studio工具->开发人员命令提示符…,运行两个命令:

VSTestConfig NETWORKEMULATION /uninstall
VSTestConfig NETWORKEMULATION /install
第二个命令应该指示它绑定到的接口的数量

要确定环回的IP地址,请从命令行运行
ipconfig/all
,并查找描述为“Microsoft环回适配器”的条目。此IP地址将是编写客户端/服务器测试代码以使用的IP地址

Ethernet adapter Local Area Connection 2:    
...
   Description . . . . . . . . . . . : Microsoft Loopback Adapter
...
   Link-local IPv6 Address . . . . . : fe80::e0d2:c0f8:b3f8:2199%20(Preferred)
   Autoconfiguration IPv4 Address. . : 169.254.33.153(Preferred)
对互联网的影响 因为网络仿真驱动程序绑定到所有可用的接口,所以当您运行单元测试并启动仿真时,您的internet连接也会减慢。您可以从“网络连接属性”对话框中取消选中/禁用来自其他接口的仿真驱动程序。它将被列为Microsoft VSTS网络仿真NDIS6驱动程序下的此连接使用以下项目:(在单元测试运行时不要这样做,我得到一个蓝屏,它损坏了驱动程序,必须再次手动重新安装)