概述
Golang是一门性能优异的静态类型语言,但因其奇快的编译速度,结合DevOps, 使得它也非常适合快速开发和迭代。
本文讲述如何使用Golang, 进行持续集成与自动化测试和部署。主要使用了以下相关技术:
- dep: 进行包的依赖管理
- gin: 搭建 api 服务
- gorm:ORM, 数据CRUD
- mysql: 存储数据
- testfixtures: 测试夹具,在自动化测试时,自动向数据库填充用于测试的数据
- httpexpect: HTTP 测试包,用于API测试
- GoDotEnv: 环境变量处理
- go test: 使用test命令进行单元测试, 基准测试和 HTTP 测试
- GitLabCI: DevOps 工具
- golint: Golang 静态检查工具
- migrate: 数据库迁移工具
- Docker: 使用 zacksleo/golang 镜像, 该镜像默认安装了 curl,git,build-base,dep 和 golint
- db2struct: 将数据库表结构一键生成为 struct(gorm的model)
- apig: 基于 gorm 和 gin 一键生成 CRUD API
开发流程
- 使用 apig 脚手架工具初始化项目结构和目录
- 使用 dep 安装相关依赖
- 使用 migrate 编写数据库迁移方法,并执行迁移创建数据表
- 使用 db2struct 生成 models
- 使用 apig 生成 crud 代码
- 使用 httpexpect 编写 api 测试代码,并通过 testfixtures 实现数据的自动填充
- 编写 GitLabCI 脚本进行持续集成
在上述过程中,如需连接数据库时,可通过 GoDotEnv 来实现环境变量的使用
相关CI脚本
集成测试
注意事项
在测试中,如果需要区分单元测试和集成测试,可以使用 build tags 实现,如在文件头部中添加 // +build integration
, 运行测试使用 - go test -tags=integration $(go list ./tests/... | grep -v /vendor/) -v
可以只执行集成测试