如何模拟Android设备上的网络问题?

我需要在以下情况下测试我的应用程序:

  • 连接设备到wifi(与互联网)。
  • 模拟互联网中断(缺乏互联网,但设备必须保持连接到WiFi网络)。
  • 几秒钟后,互联网需要再次激活。
  • 我可以模拟这种将adsl电缆从我的ruter中拉出来,但是不会很快重新连接。 这是以任何方式来模拟这个程序?


    如果你有一台Mac,你可以使用Network Link Conditionner来完成。 这非常高效,请参阅此处安装它的步骤:

    http://nshipster.com/network-link-conditioner/


    如果你碰巧有另一台设备,你可以用它创建一个热点,并禁止移动网络互联网。 测试设备将连接到热点,但由于缺乏互联网而无法到达任何地方。 至于那里的连接,我认为它比重新启动路由器更快。 但是,你必须有另一个设备才能发生这种情况......否则我不知道,我也想知道一个真实的答案。


    尝试通过一个android.os.Handler传递所有的网络请求(我也使用它与数据库交易)。 使用Runnables(更好地实现自己的Runnable类)来实现要执行的动作(在Runnable类中添加回调,日志记录和其他逻辑)。 这样,您可以轻松地在您的Runnable类中注册监听器,以执行您感兴趣的任何睡眠或失败。

    这里是我的项目的一些代码。 M_ClientRunnable类实现Runnable,并具有用于注册“取消器”,失败侦听器和成功侦听器的其他方法。

    class LooperThread extends Thread {
        public Handler mHandler;
    
        public LooperThread() {
            super();
            start();
        }
    
        public void run() {
            Looper.prepare();
            mHandler = new Handler() {
                public void handleMessage(Message msg) {
                    getLogger().info(TAG, msg.toString());
                }
            };
            Looper.loop();
        }
    
        public boolean post(M_ClientRunnable runnable) {
            if(!isAlive()) {
                start();
            }
            if (mHandler!=null) {
                return mHandler.post(runnable);
            } else {
                return false;
            }
        }
    };
    private LooperThread looper = new LooperThread();
    @Override
    public boolean post(M_ClientRunnable runnable) {
        return looper.post(runnable);
    }
    
    链接地址: http://www.djcxy.com/p/18101.html

    上一篇: How to simulate network issues on a Android device?

    下一篇: How can I render a view into a string in Visual Studio Unit Testing Framework?