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