【问题标题】:Android MVP testing methods that needs network operations需要网络操作的Android MVP测试方法
【发布时间】:2017-01-09 11:01:14
【问题描述】:

我正在使用 Junit 和 Mackito 测试我的应用程序,到目前为止测试方法很好,但对于需要网络操作的方法却没有,如何正确测试它们,以便在从后端获取数据后调用断言?

【问题讨论】:

标签: android unit-testing junit4 mvp


【解决方案1】:

一般来说,您应该测试您的应用,而不是服务器端逻辑。所以只需模拟进行网络调用的方法。

但是,如果你想测试应用程序本身的网络层,有一个好方法,我推荐这样做 - WireMock

简单地说,它创建了本地运行的网络服务器,该服务器以预定义的响应进行响应。

【讨论】:

    【解决方案2】:

    依赖于网络调用的测试方法不是一个好主意。 更好地分开测试后端并在客户端模拟它。

    无论如何,如果您想等待数据使用:Thread.sleep(Xms) 在网络调用之后和断言之前的测试方法中。

    @Test
    public void testcase() throws InterruptedException {
        // make actions and network call
    
        // Wait, for example 2 seconds. It depends a lot of connection
        Thread.sleep(2000);
    
        // Then assert whatever you want
    }
    

    【讨论】:

    • @Divers 就像我说的那样,这取决于很多连接时间和质量。但是,还有其他不使用它的理由吗?感谢您的回答。
    • 您回答了您的问题 - 这取决于网络连接,因此您的测试可能会因为连接速度慢而失败,这使得测试毫无用处。即使您想针对真实服务器进行测试(这是个坏主意),也只需在 JVM 上进行测试,并以同步方式进行网络查询。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-07-03
    • 1970-01-01
    • 2017-10-25
    • 1970-01-01
    • 1970-01-01
    • 2011-07-02
    相关资源
    最近更新 更多