2010-03-17 86 views
0

我打算执行一些自动化集成测试。这要求将数据库恢复到“干净状态”。这是最快/最好的方法吗?什么是使用NHibernate清除数据库的最快方法?

var cfg = new Configuration(); 
cfg.Configure(); 
cfg.AddAssembly("Bla"); 
new SchemaExport(cfg).Execute(false, true, false); 
+0

请参阅http://www.tobinharris.com/past/2009/8/1/in-memory-sqlite-testing-with-nhibernate/ –

回答

0

是的,它几乎是。您不必在每次测试之前创建一个新的配置对象,您可以在创建一次后重新使用它。您可以使用像sql-lite这样的内存数据库进行测试,从而加快速度。

0

我的集成测试在基类构造函数中创建SessionFactory,在测试夹具设置中创建SchemaExport。我还测试了SQLite作为内存数据库运行的额外速度。

Ayende在此blog post中给出了一个很好的示例。托宾哈里斯'article包括拖放/创建与删除的时间数据。

0

我使用Proteus,它是一个开源库。在每次测试之前,都会自动保存您的数据集,加载您想要测试的设备(例如空的数据库)。每次测试后,数据集将在最后一次测试后重新载入,数据在测试恢复前出现在数据库中。

0

由于NHibernate是数据库独立的另一个有趣的选择,如果你让它产生你的数据库是运行你的测试对像内存中的SQLite的东西。事情会以更快的速度运行。

这里是一个article关于如何使用ActiveRecord来做到这一点,但你可以采取这个概念,并使用它没有ActiveRecord。

如果您无法正常工作(这是我一开始就做的),这里是一个discussion

2
  var se = new SchemaExport(conf); 
     se.Drop(false, true); 
     se.Create(false, true); 
相关问题