移动测试基础 大家都是怎么实现 android 异步接口测试的呢

叶子 · 2018年03月26日 · 最后由 叶子 回复于 2018年03月29日 · 2757 次阅读

大家都是怎么实现 android 异步接口测试的呢?
比如有一个通过用户名登录的 android 异步接口

LoginManager.loginWithUsername(username, password, new LoginListener(){
                    @Override
                    public void onLoginResult(boolean isSuccess, User user,
                            Error error) {

                    }});
}

想针对回调函数中的 boolean isSuccess, User user,Error error 进行断言,如果直接加断言肯定是行不通的

LoginManager.loginWithUsername(aaa, "qqqqq", new LoginListener(){
                    @Override
                    public void onLoginResult(boolean isSuccess, User user,
                            Error error) {
                        Assert.assertTrue(isSuccess);//会一直执行不到
                    }});
}

问题:有什么好的办法,或者框架推荐吗?

如果觉得我的文章对您有用,请随意打赏。您的支持将鼓励我继续创作!
共收到 7 条回复 时间 点赞

用 CountDownLatch 阻塞当前的线程

最简单办法,for 循环 thread. sleep 一段时间,等接口回调消息返回就好了

—— 来自 TesterHome 官方 安卓客户端

Unmurphy 回复

嗯,我也在尝试线程阻塞的方法,但是总会报一个 java.lang.RuntimeException: Can't create handler inside thread that has not called Looper.prepare(),我的线程中没有用到 handler,怀疑是接口有问题,但是其它测试其它接口又一直处于卡死状态

CC 回复

你这个方法可行性不高,你不知道加一个多久的 sleep 合适,如果接口多,全部接口跑完之后得等多久才能出结果呢

写个观察者,设置超时,超时时间结束还没有回调就断言失败

Unmurphy 回复

CountDownLatch 阻塞,一直等待,不出来啊

Unmurphy 回复

知道是什么问题吗:https://testerhome.com/topics/12596

需要 登录 后方可回复, 如果你还没有账号请点击这里 注册