第 5 章 执行集成测试
在前几章中,我们讨论了编写和测试代码的广泛主题,采用了测试驱动开发(TDD)的方式,但我们一直将实现重点放在单元测试上。正如我们到目前为止所讨论的,单元测试位于测试金字塔的底部,数量最多,因为它们测试的是应用程序中不同独立部分或单元的功能。
到目前为止,我们讨论的概念让我们能够编写单元测试,以在多种场景下独立测试这些单元。 在第三章《模拟和断言框架》中,我们学习了如何利用框架轻松创建模拟对象,这使我们能够实例化其依赖项完全可控的单元。正如在第四章《构建高效的测试套件》中所讨论的,我们学习了如何利用流行的表驱动测试技术,轻松地编写跨多种情况的测试,包括边缘情况和特殊情况。
无论我们如何编写单元测试,它们都有一个局限性——它们仅验证有限的范围。换句话说,单元测试验证每个单元是否正常工作,但并不能验证它们是否能够正确地集成并协同工作。单元之间的集成,特别是由不同团队开发的部分,往往是错误和故障的根源,因此,验证它们是否按预期独立和协同工作是非常重要的。
现在,我们将关注于实现集成测试套件,这将帮助我们确信当多个单元协同工作时,重要功能能够按预期工作。我们还将探索如何容器化我们的应用程序,确保我们的测试能够模拟生产环境并按预期执行。
在本章中,我们将涵盖以下主题:
-
单元测试的局限性
-
在 Go 中实现集成测试
-
行为驱动测试编写的介绍
-
数据库测试的重要性
-
使用 Docker 进行容器化
技术要求
您需要安装 Go 1.19 或更高版本才能运行本章中的代码示例。安装过程可以参考官方 Go 文档,网址为 https://go.dev/doc/install 。
本书中的代码示例可以在以下 GitHub 仓库公开访问: https://github.com/PacktPublishing/Test-Driven-Development-in-Go/chapter05 。