集成测试是否使用模拟?


24

我目前在软件测试课程中,对于我们的学期项目,我们必须对其执行多种类型的测试,例如单元测试和集成测试。教授说,对于集成测试,在我们的集成测试中使用了模拟和模拟库(例如EasyMock和Mockito)。不过我有点困惑。集成测试是在类,模块,服务等外部进行测试。如果要测试多个类和服务,为什么在集成测试中应适当使用模拟和存根?


8
“集成”和“单元”测试不是通用的条款。最好问您的教授确切的定义这些术语的方式。
RubberDuck

1
只是一个评论。集成测试不是要测试依赖项。而是要测试代码与依赖项(调用,响应和错误处理等)的正确集成。
Laiv

Answers:


25

如果您拥有涉及多个外部组件的功能,则可以模拟除一个以外的所有功能,以隔离和测试特定组件。例如,假设您有一个函数,该函数调用Web服务,然后根据结果对数据库执行某些操作。您可以编写三个集成测试:

  1. 模拟Web服务调用但涉及实际数据库连接的测试。
  2. 进行真正的Web服务调用但使用模拟数据库连接的测试。
  3. 进行真实Web服务调用并涉及真实数据库连接的测试。

如果您同时运行所有三个测试,而第1个和第3个测试均失败,则您的代码中很可能存在与数据库一起使用的错误,因为唯一通过的测试是使用模拟数据库连接的测试。

通常,集成测试不使用模拟,但有时我会做类似的事情。


By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.