【发布时间】:2019-02-25 08:31:50
【问题描述】:
我有两个软件组件:我的应用程序和一个由应用程序使用的库(属于我的公司,但属于另一个团队)。该库是某些服务的客户端库并执行 HTTP 请求。该库还将 HTTP 响应映射到应用程序的内部表示。这是通过应用程序将映射类注入到库中来完成的。
我已经对映射类和应用程序进行了单元测试,而客户端库调用总是被模拟。
现在我正在考虑对库进行集成测试,但我不确定最好的方法是什么:
-
模拟库调用,只检查是否使用正确的参数调用它
- 专业人士:如果库的内部发生变化(非破坏性变化),我不必调整我的测试。
- Con:映射类未经过集成测试。我无法确定库是否已正确配置,或者映射器从库中获取的参数是否符合我的预期。
-
仅模拟库完成的 HTTP 调用
- Pro:映射类和库的配置(如果我配置正确的话)已经过测试。
- Con:我需要弄清楚库的内部结构并检查每个测试用例的 HTTP 调用的样子。此外,如果库升级到新版本的服务,我还需要调整所有 HTTP 模拟,实际上不应该关心库内部的工作方式。
-
在测试期间将库中的 HTTP 调用替换为内存中的假(=dummy)实现
- 专业人士:一切都经过测试 + 测试对库更改具有弹性。
- Con:这是一种努力实施和维护虚假实施的努力。根据服务的不同,这可能意味着在图书馆中重建服务的功能。谁应该为虚假策略负责(实施+维护)?我的团队或拥有图书馆的团队?
我赞成最后一点,但鉴于我们库的内部结构很少改变,我不确定一个虚假的策略是否值得努力。
您对此有何看法?你能想出另一种解决方案吗?
【问题讨论】:
标签: dependency-injection automated-tests integration-testing