第 4 章 构建高效的测试套件

在上一章中,我们学习了如何通过第三方库补充 Go 测试包的功能。这些库使得模拟单元测试中的依赖关系以及在测试中创建断言变得更加容易。Mocks 是能够轻松编写测试代码的基础构件,它们与 SOLID 设计原则中良好的实现代码相辅相成。

在实践中,开发人员识别出需求和实现的边界情况,确保良好的代码覆盖率,这一点我们在第 2 章《单元测试基础》中已经讨论过。在本章中,我们将学习如何创建测试套件。

在 Go 中构建测试套件的一个流行技术是表驱动测试。我们将学习如何构建覆盖边界情况的测试表,并使用多种输入来测试单元(UUT),确保单元实现稳定。我们还将利用之前探讨的一些技术,如测试设置、子测试和 mocks

Go 的一个最常见的应用场景是构建 Web 应用程序,在本章中,我们将探讨如何构建并测试这样的应用。我们将从迄今为止研究的简单计算器示例转到一个新的用例:BookSwap 应用。这个服务将允许用户创建他们希望交换的图书列表,并允许其他人借阅。

这个示例将涉及使用 Go 的 net/http 包构建 REST API,并学习如何进行测试。在处理用户输入时,尤其重要的是覆盖边界情况,因此我们将使用前面学习的技术来测试 BookSwap API

在本章中,我们将涵盖以下主要主题:

  • 什么是边界情况以及如何识别它们

  • 如何测试 Web 应用程序和 API,尤其是那些依赖外部服务的 API

  • 流行的 Go 测试技术:表驱动测试

  • BookSwap 用例应用

技术要求

要运行本章中的代码示例,您需要安装 Go 1.19 或更高版本。安装过程可以参考官方 Go 文档: https://go.dev/doc/install

本书中包含的代码示例可以在以下地址找到: https://github.com/PacktPublishing/Test-Driven-Development-in-Go/chapter04