2009-12-23 76 views
1

我正在使用与数据库交互的Castle ActiveRecord进行一些单元测试。我有一个删除数据库的过程(如果存在的话),然后重新创建它,然后在每个测试中与它进行交互。如何关闭或“uninitialize”Castle ActiveRecord?

如果我运行一个测试,这工作正常。

如果我运行多个测试,第二个失败,因为它不能删除数据库。

Castle ActiveRecord中是否有某种方式告诉它关闭并释放数据库?

回答

3

我建议删除并重新创建模式,而不是删除整个数据库

要删除模式:ActiveRecordStarter.DropSchema();

创建模式:ActiveRecordStarter.CreateSchema();

要重新初始化的ActiveRecord:ActiveRecordStarter.ResetInitializationFlag();然后重新配置。

有关指导,请参阅base AR test class

对于测试,我建议看看新的InMemoryTest

另见:docs for ActiveRecord unit-testing

+0

这似乎很好地工作。我改变了我的例程,只创建数据库,如果它不存在,并且在CreateSchema之前调用DropSchema。现在我的测试依次顺利运行。 – 2009-12-23 14:50:06

+0

另外,基础测试类在哪里?我无法在2.0下载中找到它;它从那以后被添加了? (我想我总是可以添加我自己的版本)。我会用什么InMemoryTest? – 2009-12-23 16:17:55

+0

该基础测试类用于内部ActiveRecord测试,您不会在库本身中看到它,但您可以将其复制。 – 2009-12-23 21:43:46