EF Code-first SetInitializer不会在NUnit TextFixture设置中重新创建数据库

时间:2011-03-17 16:09:36

标签: entity-framework nunit code-first

我在NUnit Text Fixture的开头为我的EF代码优先模型调用以下内容。

    [TestFixtureSetUp]
    public void Init()
    {
       DbDatabase.SetInitializer(
                    new MyDbInitialiser());
...

    }

MyDbInitialiser继承自DropCreateDatabaseAlways<MyDatabaseContext>

为什么即使重新运行整个测试夹具,NUnit测试夹具也只运行一次初始化器?

如果我关闭NUnit跑步者并重新运行测试,数据库会丢弃并重新创建。

3 个答案:

答案 0 :(得分:0)

请尝试使用[Setup]属性。标记为此属性的任何方法都将在每个[Test]之前调用。

http://www.nunit.org/index.php?p=setup&r=2.2.10

答案 1 :(得分:0)

我不熟悉EF,但有没有一种方法可以在TestFixtureTearDown中调用,以便在运行测试后进行清理?这可能会保证当您第二次运行测试时,它将再次运行所有设置(而不是在缓存中保留某些内容)

答案 2 :(得分:0)

类Database包含Delete,Create,Initialize等方法。我想你可以自己打电话来实现你所追求的目标。