5

我的笔记本电脑上有一个本地安装的 MySQL 服务器,我想将其中的信息用于单元测试,所以我想创建一个脚本来自动生成所有数据。我正在使用已经生成表(从模型)的 MySQL Workbench。是否可以使用它或其他工具来创建自动脚本来填充数据?

编辑: 我现在看到我不清楚。我确实有用于单元测试的有意义的数据。当我说“自动生成所有数据”时,我的意思是该工具应该获取我今天在本地数据库中拥有的有意义的数据,并创建一个脚本来在其他开发人员的数据库中生成相同的数据。

4

2 回答 2

1

最有用的单元测试是那些反映您期望或在实践中看到的数据的测试。用随机位填充您的模式并不能替代精心设计的测试数据。正如@McWafflestix 建议的那样 mysqldump 是一个有用的工具,但如果您想要更简单的东西,请考虑将LOAD DATA 与 INFILE 一起使用,它会从 CSV 填充表。

其他一些需要考虑的事情:

  1. 使用处于已知状态的数据库进行测试。将所有数据库交互单元测试包装在始终回滚的事务中。
  2. 使用dbunit可以达到同样的目的。

更新

如果您在 Java 环境中,dbUnit 是一个很好的解决方案:

  1. 您可以通过其 API 以 XML 格式导入和导出数据,这将解决从您的计算机到团队中其他成员的问题。
  2. 它旨在恢复数据库状态。因此,它会在执行测试之前对数据库进行快照,然后在结束时恢复。所以测试没有副作用(即它们不会永久更改数据)。
于 2010-12-18T02:52:04.110 回答
0

您可以填充默认值(如果已定义)

CREATE TABLE #t(c1 int DEFAULT 0,c2 varchar(10) DEFAULT '-')
GO
--This insert 50 rows in table
INSERT INTO #t( c1, c2 )
DEFAULT VALUES
GO 50

SELECT * FROM #t
DROP TABLE #t
于 2010-12-17T23:33:13.857 回答