gpt4 book ai didi

模拟集成测试

转载 作者:行者123 更新时间:2023-12-02 00:48:15 26 4
gpt4 key购买 nike

如何模拟集成测试所需的众多依赖项?

我使用 Mockito 进行“纯”单元测试。在这种情况下,“纯粹”意味着测试单个类,模拟它的所有依赖项。美丽。

现在进行集成测试。假设在这种情况下,集成测试将测试如下内容:

  1. 消息被放入队列
  2. 消息已“处理”
  3. 响应消息放入响应队列

我们还可以说,第 2 步中发生的处理是很严肃的事情。它依赖于大量的数据库交互、多个外部服务、文件系统以及各种各样的东西。该流程还会触发很多副作用,因此我不能简单地确保响应是正确的 - 我需要验证副作用。

每个依赖项都由一个无状态服务类包装,这使得它们很好并且可模拟。

人们如何处理这个问题?

我很想使用 Mockito,这样我就可以验证上述流程会产生的副作用。然而,Mocktio 的文档(在很大程度上是它的实现)似乎强烈反对在“纯”单元测试之外的上下文中使用它。我尝试过走这条路,但是

  • 填充 stub 数据很困难(因为 stub 数据很多)
  • 让 Spring 将这些 stub 实例注入(inject)到我的 bean 中是很困难的
  • “重置”模拟非常困难,这样我就可以在不清除 stub 的情况下验证一组不同的交互。

编辑

我知道我可以使用 HSQLDB 实例之类的东西来处理数据库问题,但仍然存在外部服务的问题。为了可重复性,我不能依赖这些服务的启动、处于我需要的状态等。我看到的唯一选择是模拟它们。

你要做什么?

最佳答案

很好的问题。

看来您已经达到了 Mockito 的极限。如果您想检查对象交互,Mockito 非常有用。

不过,您想要的似乎是更高抽象级别的可观察性(和可控性)。恐怕您需要的模拟或 stub 应该经过精心设计和手工制作。

在单元级别,可以通过 Mockito 很好地生成这些模拟。在集成级别,这变得更加困难,并且您将需要专门设计的可测试性接口(interface)。

关于模拟集成测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10131723/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com