mysql - 如何用MySQL编写golang集成测试

标签 mysql testing go integration-testing

我想编写一个集成测试,使用 MySQL 来测试我的查询。如何在 golang 中执行此操作?

这包含几个问题:

  1. 如何在 golang 测试中设置 MySQL(内存中?)服务器?
  2. 如何在每次测试之前/之后清理/重新创建数据模型,以免留下垃圾?
  3. 如何在所有测试完成后拆除mysql?

最佳答案

如果你真的想要一个嵌入式 MySQL,你可以使用 golangs C 绑定(bind)来集成:https://dev.mysql.com/doc/refman/5.1/en/libmysqld.html .我还没有看到任何项目将绑定(bind)打包到一个不错的 Go 包中,那将是一个有趣的小项目。

否则,您可以使用 Docker 设置一次性 MySQL 服务器,但这需要在运行 go test 之前执行一些设置/拆卸步骤。这就是我们在我工作的地方所做的事情。

在这两种情况下,您都需要编写设置/拆卸方法来根据测试需要创建和删除表。这些只是普通的 SQL 语句,DROP DATABASE、CREATE TABLE 等。

作证https://github.com/stretchr/testify有用于设置/拆卸的工具,但只需为此编写一个辅助函数就可以了。

关于mysql - 如何用MySQL编写golang集成测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29910793/

相关文章:

mysql - 连接mysql中的多个表

php - 如何在 Laravel 5.2 中测试文件上传

testing - Dartium/content shell 无法运行测试

inheritance - 如何在golang中扩展没有主体的功能

php preg_split 不识别空格

php - 获取一轮剩余时间

testing - Azure DevOps Pipeline vstest.failed 即使所有单元测试都通过了 locallt

google-app-engine - GAE过滤器实体键(Golang)

docker - 如何基于对/var/run/docker.sock 的临时访问权限给 docker 容器

mysql - 如何在 MYSQL 中更新一个表以引用另一个表?