如何用MySQL编写golang集成测试

Fil*_*lip 5 mysql testing integration-testing go

我想编写一个使用MySQL来测试查询的集成测试。如何在golang中做到这一点?

这包含几个问题:

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

Joa*_*org 5

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

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

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

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