对异步代码进行单元测试是一种好习惯吗?

时间:2019-01-10 00:12:15

标签: java android testing

绝对有可能通过让线程等待异步代码完成来测试异步代码。但是,鼓励测试异步代码。还是相反,我们应该分开逻辑而仅测试同步部分吗?

例如,在我的应用中,我将进行REST API调用以从服务器获取json,然后需要解析json。

有两种方法:

  1. 测试整个获取和解析。我们可以使用MockWebServer模拟超时和响应。

    -缺点:这会带来一些复杂性。

  2. 只需测试解析部分,因为我们无法控制API调用部分;由okhttp

    控制

    -缺点:很难解决超时问题。

2 个答案:

答案 0 :(得分:1)

由于您的问题专门询问“单元测试”,因此简单的回答是“否”。除非您测试的单元对异步调用的结果不感兴趣,否则它不是您单元的一部分。单元测试应仅确保您的单元正常工作。在这种情况下,您应该验证异步调用是否已正确分派(因此这将是白盒测试)。

答案 1 :(得分:0)

测试按层次结构进行组织。最低级别的测试逻辑,下一级别的测试逻辑如何在框架中调用逻辑(在您的情况下为异步http),最后,通过浏览器进行手动测试(如果您正在创建网站)。所有级别都必须经过测试。通常,所有程序单元都能正常运行,但应用程序却无法正常运行。