需要帮助区分模拟和测试驱动程序
Need help differentiating between mocks and test drivers
至少可以说我很困惑。我可能弄错了 Mocks,弄错了 Test Drivers,或者两者都有。
我对 Mocks 的理解是它是一种模仿单元的方式,以避免在测试时依赖于系统的特定部分。
我对Test Drivers的理解是专门用于Bottom-up集成测试,模仿High Level Modules,目前还没有实现。
对我来说,这让 Test Drivers 听起来像是一种 Mock,但 Mock 是专门用于单元测试的东西吗?
两者有什么区别?
我是这样理解的:
模拟:
您有标准的分层应用程序,例如控制器->服务->存储库。你想对它进行单元测试。所以你正在使用模拟并将存储库模拟注入服务,这样你就可以隔离服务测试。
测试驱动程序:
您有相同的应用程序,Controller->Service->Repository。您完成了所有单元测试,现在您想要测试存储库级别。在存储库测试期间使用模拟没有多大意义,因为它们不会显示您的 sql 查询是否正确。所以是时候进行集成测试了。此外,您不想测试整个系统(可能包含 100 个服务),您想要隔离您的应用程序,所以您正在旋转,比方说,docker 容器与数据库(或嵌入式数据库,如 h2 ) 和 运行 您对此数据库的查询仅用于测试。
相同的示例适用于其他服务客户端,例如你想通过 HTTP 获取一些东西,而不是调用真正的服务,你启动 MOCK SERVER,例如wiremock.
Drivers are the modules that act as temporary replacement for a calling module and give the same output as that of the actual product.
Drivers are also used when the software needs to interact with an external system and are usually complex than stubs.
回顾一下:
模拟在内存对象中很小,配置非常简单,它们在单元测试期间用于隔离 类。
测试驱动程序更复杂,在集成测试期间使用它们将组件替换到您的基础架构中以隔离整个应用程序。
至少可以说我很困惑。我可能弄错了 Mocks,弄错了 Test Drivers,或者两者都有。
我对 Mocks 的理解是它是一种模仿单元的方式,以避免在测试时依赖于系统的特定部分。
我对Test Drivers的理解是专门用于Bottom-up集成测试,模仿High Level Modules,目前还没有实现。
对我来说,这让 Test Drivers 听起来像是一种 Mock,但 Mock 是专门用于单元测试的东西吗?
两者有什么区别?
我是这样理解的:
模拟:
您有标准的分层应用程序,例如控制器->服务->存储库。你想对它进行单元测试。所以你正在使用模拟并将存储库模拟注入服务,这样你就可以隔离服务测试。
测试驱动程序:
您有相同的应用程序,Controller->Service->Repository。您完成了所有单元测试,现在您想要测试存储库级别。在存储库测试期间使用模拟没有多大意义,因为它们不会显示您的 sql 查询是否正确。所以是时候进行集成测试了。此外,您不想测试整个系统(可能包含 100 个服务),您想要隔离您的应用程序,所以您正在旋转,比方说,docker 容器与数据库(或嵌入式数据库,如 h2 ) 和 运行 您对此数据库的查询仅用于测试。
相同的示例适用于其他服务客户端,例如你想通过 HTTP 获取一些东西,而不是调用真正的服务,你启动 MOCK SERVER,例如wiremock.
Drivers are the modules that act as temporary replacement for a calling module and give the same output as that of the actual product.
Drivers are also used when the software needs to interact with an external system and are usually complex than stubs.
回顾一下:
模拟在内存对象中很小,配置非常简单,它们在单元测试期间用于隔离 类。
测试驱动程序更复杂,在集成测试期间使用它们将组件替换到您的基础架构中以隔离整个应用程序。