【发布时间】:2016-07-12 23:52:14
【问题描述】:
我目前正在进行测试,我想在使用 espresso 进行测试时模拟连接不佳的情况。有没有办法在代码中伪造这个?
在我的应用中有调用 api 时,我会启动动画,我只是想确保在连接不良的情况下,此动画将一直运行,直到收到所有数据。
我正在寻找代码中的解决方案,我知道一些不同的解决方法或模拟器的使用,我真的在寻找代码中的东西。
【问题讨论】:
标签: android
我目前正在进行测试,我想在使用 espresso 进行测试时模拟连接不佳的情况。有没有办法在代码中伪造这个?
在我的应用中有调用 api 时,我会启动动画,我只是想确保在连接不良的情况下,此动画将一直运行,直到收到所有数据。
我正在寻找代码中的解决方案,我知道一些不同的解决方法或模拟器的使用,我真的在寻找代码中的东西。
【问题讨论】:
标签: android
真实设备测试的解决方法:如果您有 iPhone,则可以创建一个 iPhone 热点并使用iPhone bad network simulation。
【讨论】:
另一种模拟方法是使用charles 之类的东西,如果您不想或不能使用模拟器,这非常好,这不是程序的主要目的(主要用于 http 测试)但可以也可以用于此。
我不确定,但我认为 Android 6.0 或三星(请有人更正此声明)在开发人员设置中将其作为选项。
还有一些程序可以降低你在 Mac 上的连接速度,这样你就可以使用蓝牙与设备共享你的互联网连接,缺点是测试时电脑互联网速度很慢。而且不是很方便。
【讨论】:
更新 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() 函数中更新您的视图。
【讨论】: