2010-11-03 80 views
0

为了软件测试的目的,我想创建生产数据库的无菌克隆(所有数据都是空白的)。这样我就可以每次对已知的一组记录运行我的单元测试。我期待在单元测试中尝试以编程方式进行此操作,这样我就可以确保这些表格完全包含功能测试所需的测试数据。以编程方式从生产数据库创建空白数据库

我发现有关在C#中创建Access数据库的以下information。注意:我知道Access可能不是最好的解决方案,但它足够好!

我想知道,是否有一种使用TableAdapters(可能)复制空白Access数据库文件中的生产数据库模式(没有任何数据)的方法?

回答

4

这样做:

  • 创建访问文件的副本;生产 - >测试
  • 连接数据库
  • 运行DELETE * FROM [table]所有表的测试数据库
  • enumerate all tables。跑了好几次,如果你有FK的依赖,直到没有错误 - 或TRUNCATE [table]的评论
  • compact数据库
+2

'TRUNCATE'的工作速度肯定比'DELETE'快 – abatishchev 2010-11-03 10:12:35

0

我对使用Access作为生产数据库有不好的经验。我不会推荐。要么与SQLite或火鸟。其次,是的,你可以使用TableAdapters。您需要为每个数据库创建两个连接。但我认为可能有工具可以做到这一点。

编辑**

多大的数据库?对于高达4GB,Oracle Express Edition可能会有所帮助。而且,从Oracle到Oracle的复制也很容易。

+0

我要清楚的是,生产数据库是Oracle数据库但为了方便使用和携带我在想单元测试数据库应该是Access。 – 2010-11-03 09:23:26

+0

对于测试,您可以使用任何东西,除非它与生产环境无关。 – RKh 2010-11-03 09:28:13

+0

根据测试(以及您对“单元”的定义),我通常会尽可能地尝试复制现场活动。因此,有一个Oracle实例,然后像dbunit那样将其置于已知状态,以便测试和shell脚本使其“实时减数据”。 – 2010-11-03 15:06:32

相关问题