我经常不得不针对 Twitter 进行编码,现在针对我无法控制的其他 Web 服务 API。
我试图编写测试用例,但似乎太难了:
- 我受制于我无法控制的东西(网络服务)的速度。
- 我无法控制 Web 服务的状态(无法删除帐户、推文和重启)
对于面临类似情况的人,我想找出他们设计的解决方案。
PS:我熟悉模拟对象,但我想获得更具体的经验教训——例如,我使用一个库与 Twitter (Twitter4J) 交谈,当我最后一次查看时,它不允许我替换模拟对象对于 Twitter 服务。
谢谢。
在我的项目(依赖于各种外部 Web 服务)中,我将测试重点放在了失败事件上。因此,在为 Facebook Connect 构建单元测试时,我尝试将垃圾数据传递给我的 Web 服务响应处理方法,以确保我可以处理我下面的服务更改。成功的事件测试不是我放入单元测试的东西,因为它会产生很多麻烦(比如时间轴中的事件)。一个可能的解决方法是在您的预期服务中创建一个测试帐户并将您的单元测试指向该 ID。如果您确保您的网络服务发布代码不包含硬编码的 ID(我喜欢创建<Service>Config
传递给<Service>Methods
类的类,例如FacebookMethods.auth(FacebookConfig config, String uid)
) 这让我可以为操作创建一个 TestConfig,这些操作将以无法撤消或不应该公开看到的方式修改服务)。