我想为我的Codename One应用编写功能测试。
要做到这一点,我需要能够模拟一些服务器响应,以便它们返回我所需的特定测试。
我尝试使用发送HTTP请求的函数的一件事是将ConnectionRequest作为参数,这样我可以注入一些东西来模拟网络延迟,然后使用模拟的响应调用回调。
然而,当我尝试在单元测试的prepare方法中注入ConnectionRequest的模拟时,它们仍然在应用程序启动后注入,这对我的情况不起作用,因为我在开始时发送了HTTP请求应用程序。
是否可以在启动应用程序之前模拟ConnectionRequest或执行等效操作?
答案 0 :(得分:1)
您可以降低模拟器中的连接速度,这将模拟设备上的慢速连接或完全关闭它以模拟无互联网连接。在模拟 - >下找到模拟器中的选项网络即可。将此设置更改为Slow connection
或Disconnected
,然后重新运行您的应用。
指向错误的网址以模拟404错误。
从服务器端代码返回不可读的数据,以模拟IOException或NullPointer异常。
执行此操作时,请确保您的网络监视器可见。您想要的大多数其他响应都可以在服务器端完成。
答案 1 :(得分:0)
这是我最终做的事情。如果有人需要自动化测试的解决方法,我会发布此信息。
HTTPRequestInterface
的接口,该接口公开构建HTTP查询的必要方法HTTPRequestInterface
的{{1}}实现,它只是ConnectionRequest的包装HTTPRequest
,它有一个名为HTTPRequestFactory
的静态方法和一个名为create
的方法。如果没有设置mock,则此类创建一个普通的setMock
,如果设置了mock,则创建指定的mock。HTTPRequest
替换为ConnectionRequest
HTTPRequestFactory.create()
,它有两个方法:InitialSetup
,它接受要执行的setInitialization
,以及Runnable
方法,它只运行{{1} }}。init
需要一些努力,但使用模拟后端的自动化测试带来了我认为绝对值得的信心!