绝对有可能通过让线程等待异步代码完成来测试异步代码。但是,鼓励测试异步代码。还是相反,我们应该分开逻辑而仅测试同步部分吗?
例如,在我的应用中,我将进行REST API调用以从服务器获取json,然后需要解析json。
有两种方法:
测试整个获取和解析。我们可以使用MockWebServer
模拟超时和响应。
-缺点:这会带来一些复杂性。
只需测试解析部分,因为我们无法控制API调用部分;由okhttp
-缺点:很难解决超时问题。
答案 0 :(得分:1)
由于您的问题专门询问“单元测试”,因此简单的回答是“否”。除非您测试的单元对异步调用的结果不感兴趣,否则它不是您单元的一部分。单元测试应仅确保您的单元正常工作。在这种情况下,您应该验证异步调用是否已正确分派(因此这将是白盒测试)。
答案 1 :(得分:0)
测试按层次结构进行组织。最低级别的测试逻辑,下一级别的测试逻辑如何在框架中调用逻辑(在您的情况下为异步http),最后,通过浏览器进行手动测试(如果您正在创建网站)。所有级别都必须经过测试。通常,所有程序单元都能正常运行,但应用程序却无法正常运行。