如何使用 MySQL 编写 golang 集成测试
How to write golang integration test with MySQL
我想编写一个集成测试,使用 MySQL 来测试我的查询。如何在 golang 中执行此操作?
这包含几个问题:
- 如何在 golang 测试中设置 MySQL(内存中?)服务器?
- 如何clean/recreate数据模型before/after每次测试不留下垃圾?
- 所有测试完成后如何拆除mysql?
如果你真的想要一个嵌入式 MySQL,你可以使用 golangs C 绑定来集成:https://dev.mysql.com/doc/refman/5.1/en/libmysqld.html。我还没有看到任何项目在一个不错的 Go 包中打包绑定,那将是一个有趣的小项目。
否则您可以使用 Docker 设置一次性 MySQL 服务器,这需要一些 setup/teardown 步骤才能 运行 进行测试。这就是我工作的地方。
在这两种情况下,您都需要编写 setup/teardown 方法来根据测试需要创建和删除表。这些只是普通的 SQL 语句、DROP DATABASE、CREATE TABLE 等
证明 https://github.com/stretchr/testify 有用于 setup/teardown 的工具,但只需为此编写一个辅助函数就可以了。
我想编写一个集成测试,使用 MySQL 来测试我的查询。如何在 golang 中执行此操作?
这包含几个问题:
- 如何在 golang 测试中设置 MySQL(内存中?)服务器?
- 如何clean/recreate数据模型before/after每次测试不留下垃圾?
- 所有测试完成后如何拆除mysql?
如果你真的想要一个嵌入式 MySQL,你可以使用 golangs C 绑定来集成:https://dev.mysql.com/doc/refman/5.1/en/libmysqld.html。我还没有看到任何项目在一个不错的 Go 包中打包绑定,那将是一个有趣的小项目。
否则您可以使用 Docker 设置一次性 MySQL 服务器,这需要一些 setup/teardown 步骤才能 运行 进行测试。这就是我工作的地方。
在这两种情况下,您都需要编写 setup/teardown 方法来根据测试需要创建和删除表。这些只是普通的 SQL 语句、DROP DATABASE、CREATE TABLE 等
证明 https://github.com/stretchr/testify 有用于 setup/teardown 的工具,但只需为此编写一个辅助函数就可以了。