使用值填充MySQL数据库

时间:2010-12-17 23:12:48

标签: java sql mysql unit-testing mysql-workbench

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

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

2 个答案:

答案 0 :(得分:1)

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

要考虑的其他一些事情:

  1. 使用已知状态的数据库进行测试。将所有数据库交互单元测试包装在始终回滚的事务中。
  2. 使用dbunit来达到同样目的。
  3. <强>更新

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

    1. 您可以通过其API以XML格式导入和导出数据,这将解决从您的计算机到团队中其他成员的问题。
    2. 它旨在恢复数据库状态。因此,它会在执行测试之前对数据库进行快照,然后在结束时进行恢复。因此,测试是无副作用的(即它们不会永久地改变数据)。

答案 1 :(得分: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