【发布时间】:2023-03-30 08:54:01
【问题描述】:
我想编写一个使用 MySQL 来测试我的查询的集成测试。如何在 golang 中做到这一点?
这包含几个问题:
- 如何在 golang 测试中设置 MySQL(内存中?)服务器?
- 如何在每次测试之前/之后清理/重新创建数据模型,以免留下垃圾?
- 所有测试完成后如何拆掉mysql?
【问题讨论】:
标签: mysql testing go integration-testing
我想编写一个使用 MySQL 来测试我的查询的集成测试。如何在 golang 中做到这一点?
这包含几个问题:
【问题讨论】:
标签: mysql testing go integration-testing
如果你真的想要一个嵌入式 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 具有设置/拆卸工具,但只需为此编写一个辅助函数就可以了。
【讨论】: