为 Go CLI 应用程序编写集成测试

主要观点:作者编写了 Go 程序 fakedata 后,因用户报告发布后几小时引入的问题且无端到端测试覆盖而思考如何进行 Go CLI 应用的端到端测试,进而找到简单有效的方法。
关键信息

  • 端到端测试 Go CLI 应用的方法:通过make test目标构建测试二进制并运行集成测试,每个测试使用runBinary辅助函数运行 CLI 应用,最后用黄金文件断言正确行为。
  • 示例 CLI 应用echo-args及各种功能和用法。
  • 测试相关的TestMain函数设置、runBinary辅助函数、使用黄金文件和 TableDrivenTests 进行测试等。
  • 提及 Go 1.20 新增的-cover标志可用于生成覆盖信息。
    重要细节
  • TestMain是推荐的测试设置和清理方式,os.Chdir("..")虽丑但实用可设置二进制路径。
  • runBinary函数可运行二进制并添加覆盖设置环境。
  • 测试用例通过结构体数组和t.Run进行遍历测试,使用黄金文件进行实际输出和预期输出的比较,可通过命令行标志自动更新黄金文件。
  • 集成测试在 GitHub Actions 上运行良好,通过添加测试用例可增加覆盖率。测试仅假设二进制的构建方式和名称,行为改变时才需修改测试。
阅读 8
0 条评论