使用外部Web服务时的测试策略

时间:2012-09-19 17:27:12

标签: java testing testng mockito twitter4j

我经常需要针对Twitter进行编码,现在针对其他我无法控制的Web服务API。

我曾尝试编写测试用例,但似乎太难了:

  1. 我受限于无法控制的事物(网络服务)。
  2. 我无法控制网络服务的状态(无法删除帐户,推文和重启)
  3. 对于面临类似情况的人,我想找出他们设计的解决方案。

    PS:我对模拟对象很熟悉,但我想获得更多具体的经验教训 - 例如我使用图书馆与Twitter(Twitter4J)交谈,当我最后看到时不允许我替换Twitter服务的模拟对象。

    感谢。

1 个答案:

答案 0 :(得分:1)

在我的项目中(依赖于各种外部Web服务)我将测试重点放在了失败事件上。因此,当为Facebook Connect构建单元测试时,我试图将垃圾数据传递给我的Web服务响应处理方法,以确保我可以处理我下面的服务更改。成功的事件测试不是我投入单元测试的原因,因为它创造了如此多的残余(如时间轴中的事件)。可能的解决方法是在您的预期服务中创建一个测试帐户,并将您的单元测试指向该ID。如果您确保您的Web服务发布代码不包含硬编码ID(我喜欢创建传递给<Service>Config<Service>Methods类的FacebookMethods.auth(FacebookConfig config, String uid)类),这可以让我创建一个TestConfig用于以无法撤消或不应公开查看的方式修改服务的操作。