集成测试运行注入代码的库的正确方法是什么?

时间:2019-02-25 08:31:50

标签: dependency-injection automated-tests integration-testing

我有两个软件组件:我的应用程序和一个库(由我的公司拥有,但由另一个团队拥有),该库由该应用程序使用。该库是某些服务的客户端库,并执行HTTP请求。该库还将HTTP响应映射到应用程序的内部表示。这是通过应用程序将映射类注入到库中来完成的。

我已经对映射类和应用程序进行了单元测试,而客户端库调用总是被模拟。

现在我正在考虑对库进行集成测试,但是我不确定执行此操作的最佳方法是什么:

  • 模拟库调用,仅检查其是否使用正确的参数

    • 专业人士:如果库的内部发生了变化(具有不间断的变化),那么我就不必调整测试。
    • 缺点:映射类未经集成测试。我不能确定是否正确配置了库,或者无法确定映射器从库中获取的参数是否是我期望的。
  • 仅模拟库执行的HTTP调用

    • 专业人士:测试了映射类和库的配置(如果我正确配置的话)。
    • 缺点:我需要弄清楚该库的内部,并检查每个测试用例的HTTP调用外观。另外,如果库升级到该服务的新版本,我也需要调整所有HTTP模拟,并且实际上不必关心库的内部工作方式。
  • 在测试过程中将库中的HTTP调用替换为内存中的伪(= dummy)实现

    • 专业版:一切都经过测试,而且测试可以抵抗库更改。
    • 缺点:这是实施和维护虚假实施的努力。根据服务的不同,这可能意味着在库中重建服务的功能。谁应对假冒策略负责(实施+维护)?我的团队还是拥有图书馆的团队?

我支持最后一点,但是鉴于我们库的内部结构很少更改,因此我不确定是否应该使用伪造的策略。

您对此有何看法?您能想到其他解决方案吗?

1 个答案:

答案 0 :(得分:2)

我将在库中创建帮助器,以允许您模拟HTTP响应。因此,您将看到在库中运行的代码,并且可以使用库来验证JSON格式,以确保http请求/响应是您所期望的。

从这个意义上说,您正在检查 i)该库实际上与您的系统兼容; ii)处理正确的HTTP响应;因此,您的帮手可能很容易,因此开发人员只需要提供http响应的内容