软件测试:测试远程API还是只使用模拟?

时间:2012-08-19 17:25:58

标签: unit-testing testing mocking tdd integration-testing

假设您的网站需要调用Twitter API来执行某些任务,您有几种选择:

  1. 仅使用模拟
  2. 在单元测试中使用mock,但在集成测试中使用生产API
  3. 只调用生产API,绝不使用mock
  4. 如果您的服务取决于外部API,哪一个是最好的方法?

3 个答案:

答案 0 :(得分:2)

我会退后一步,问自己你要测试的是什么。

如果您试图单独测试其他代码,请使用模拟(毕竟这是模拟的目的)。

如果您尝试真正测试端到端,请使用生产API(如果有实用测试API,则使用它)。

所以我的答案非常接近你的第二选择,但需要注意的是你应该考虑是否需要从第三方测试API。有时这样做或者是必要的,有时它没有意义(它们被认为是可靠的,或者这样做非常不方便)。

答案 1 :(得分:0)

我认为第二个是最好的解决方案。我在功能测试中使用模拟单元测试和生产API。 我不希望单元测试使用远程api因为我希望它们快速运行而我不测试该api的结果(和连接),但我希望我的Jenkins失败,如果api已经改变或我有一个连接问题或其他什么

答案 2 :(得分:0)

使用Mock的一个优点是进行“负面测试”,例如:您的代码如何响应API返回的某些错误条件。使用Mock可以测试100%的可达到的'代码,而这将使用真实的API(特别是在您的组织外部提供的API)存在问题。