【问题标题】:Android : is there any way to fake programatically a poor connection [duplicate]Android:有没有办法以编程方式伪造连接不良[重复]
【发布时间】:2016-07-12 23:52:14
【问题描述】:

我目前正在进行测试,我想在使用 espresso 进行测试时模拟连接不佳的情况。有没有办法在代码中伪造这个?

在我的应用中有调用 api 时,我会启动动画,我只是想确保在连接不良的情况下,此动画将一直运行,直到收到所有数据。

我正在寻找代码中的解决方案,我知道一些不同的解决方法或模拟器的使用,我真的在寻找代码中的东西。

【问题讨论】:

    标签: android


    【解决方案1】:

    您可以在模拟器设置中的网络部分进行设置:

    【讨论】:

      【解决方案2】:

      真实设备测试的解决方法:如果您有 iPhone,则可以创建一个 iPhone 热点并使用iPhone bad network simulation

      【讨论】:

        【解决方案3】:

        另一种模拟方法是使用charles 之类的东西,如果您不想或不能使用模拟器,这非常好,这不是程序的主要目的(主要用于 http 测试)但可以也可以用于此。

        我不确定,但我认为 Android 6.0 或三星(请有人更正此声明)在开发人员设置中将其作为选项。

        还有一些程序可以降低你在 Mac 上的连接速度,这样你就可以使用蓝牙与设备共享你的互联网连接,缺点是测试时电脑互联网速度很慢。而且不是很方便。

        【讨论】:

          【解决方案4】:

          更新 1:

          您可以使用

          在浓缩咖啡中添加延迟
          SystemClock.sleep(10000);
          

          没试过。您可以在这里尝试更新吗?


          更新 2:

          http://droidtestlab.com/delay.html这个链接可能有用。


          按照建议,您应该能够通过模拟器或使用类似 charles 的工具来模拟网络速度。如果您想通过代码延长延迟(我希望仅用于测试目的,就像您在更新的问题中提到的那样),您可以在网络请求结束后和使用该数据更新视图之前使用可运行的 Handler。

          Handler handler = new Handler(); 
          handler.postDelayed(new Runnable() {
               @Override 
               public void run() { 
          
               } 
          }, 10000); // 10sec delay 
          

          并在 Runnable 的 run() 函数中更新您的视图。

          【讨论】:

          • 所以我猜不可能在测试文件中做到这一点?
          • 浓缩咖啡可以。我已经更新了答案。它有帮助吗?
          • 如果你能分享一些代码,那将有很大帮助。
          猜你喜欢
          • 2010-09-25
          • 2021-10-28
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2018-06-20
          • 2015-03-14
          • 1970-01-01
          相关资源
          最近更新 更多