如何用MySQL编写golang集成测试

时间:2015-04-28 05:11:40

标签: mysql testing go integration-testing

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

这包含几个问题:

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

1 个答案:

答案 0 :(得分:3)

如果你真的想拥有一个嵌入式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有设置/拆卸的工具,但只是为此编写辅助函数就可以了。