需要帮助来区分模拟和测试驱动程序

安德斯·詹森(Anders Jensen)

我很困惑,至少可以说。我可能会把Mocks弄错,Test Drivers弄错了,或者两者都有。

我对Mocks的理解是,它是模仿单元的一种方法,可以避免在测试时依赖于系统的特定部分。

我对测试驱动程序的理解是,它专门用于自下而上的集成测试,以模仿尚未实现的高级模块。

对我来说,这使测试驱动程序听起来像一种模拟,但是模拟特别是一种单元测试吗?

两者有什么区别?

伊万·莱玛(Ivan Lymar)

我通过以下方式了解它:

嘲笑:

您具有标准的分层应用程序,例如Controller-> Service-> Repository。您要对其进行单元测试。因此,您正在使用模拟并将Repository Mock注入Service,从而可以隔离Service测试。

测试驱动程序:

您具有相同的应用程序,即Controller-> Service-> Repository。您已经进行了所有单元测试,现在想测试存储库级别。在存储库测试期间使用Mocks并没有多大意义,因为它们不会显示您的sql查询是否正确。因此,现在该进行集成测试了。另外,您也不想测试整个系统(可能包含100个服务),想隔离您的应用程序,因此您正在旋转带有数据库(或嵌入式数据库,例如h2)的docker容器并运行您的此数据库上的查询仅用于测试。

相同的示例适用于其他服务客户端,例如,您想通过HTTP获得某些信息,而不是调用真实服务,而是启动MOCK SERVER,例如Wiremock。

驱动程序是充当调用模块的临时替换并提供与实际产品相同的输出的模块。

当软件需要与外部系统进行交互并且通常比桩模块复杂时,也会使用驱动程序。

回顾一下:

内存对象很小,它们的配置非常简单,它们在单元测试期间用于隔离类。

测试驱动程序更加复杂,在集成测试期间使用它们来将组件替换到您的基础架构中,以隔离整个应用程序。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

需要帮助为Ubuntu 16.04安装wifi驱动程序

视频驱动程序帮助

C#-需要帮助来创建程序来通过画线来模拟素数行为

渲染和测试,驱动程序重要吗?

完全是Ubuntu的新手。需要有关nVidia驱动程序的帮助

模拟数据库驱动程序

如何从Windows驱动程序代码中区分devmgmt的“禁用”和“卸载”?

如何使用go mongo驱动程序一起执行查找,区分和排序

需要Xpath来选择Selenium Web驱动程序中的复选框

我的特定dom元素需要xpath来标识该元素(Selenium Web驱动程序)

Nvidia驱动程序安装和--kernel-source-path的帮助

JDBC驱动程序和驱动程序

在每次使用C#/ Selenium进行测试之前,需要驱动程序进行初始化

如何编写应用程序来控制 pnp 和 kmdf 中的驱动程序?

驱动程序类名称需要 jdbcUrl

我需要VGA驱动程序吗?

我需要任何驱动程序吗?

驱动程序需要Linux源

在安装Ubuntu时需要驱动程序

如何测试广播驱动程序?

Flutter驱动程序测试超时

如何围绕 JUnit 测试设置和拆除变量(和驱动程序)?

需要帮助来创建我的C ++程序

Linux 和以太网 2 VSDL 转换器:我需要驱动程序吗?

如何打包和分发具有需要安装驱动程序的依赖项的Python项目?

为什么同时需要x服务器和linux内核的驱动程序?

我可以安装需要Windows 7和Windows 10的驱动程序吗?

混合网络和非网络黄瓜/硒测试,避免创建网络驱动程序

使用Spring Boot和嵌入式驱动程序测试Neo4j