从单元测试访问DBContext时抛出异常

时间:2012-07-16 23:48:56

标签: asp.net-mvc-3 visual-studio-2010 linq unit-testing dbcontext

任何单元测试包括从我的DBContext调用SELECT(使用LINQ)数据会引发以下错误:

  

支持'MyDBContext'上下文的模型自此以后发生了变化   数据库已创建。手动删除/更新数据库,或   使用IDatabaseInitializer实例调用Database.SetInitializer。   例如,DropCreateDatabaseIfModelChanges策略将   自动删除并重新创建数据库,并可选择播种它   新数据。

搜索该特定错误会让我相信我需要在Global.asax Application_Start方法中包含以下行:

System.Data.Entity.Database.SetInitializer<MyDBContext>( null );

这是在运行应用程序本身时修复类似的错误。不幸的是,当我运行我的应用程序时,我没有收到此错误,并且我的单元测试项目似乎没有Application_Start方法。有没有办法到单元测试项目,我正在使用自定义数据库后端并忽略其中发生的任何更改?

我在主项目工作一段时间之后添加了单元测试项目,所以我可能会以某种方式弄乱它,但我无法弄清楚我的生活该怎么做。我正在使用Visual Studio 2010中的内置单元测试。

1 个答案:

答案 0 :(得分:1)

有两种方法可以与VS单元测试框架一起使用,允许您在每次测试之前和之后以及文件中包含的所有测试之前和之后运行一些代码

// Use TestInitialize to run code before running each test 
[TestInitialize()]
public void MyTestInitialize() 
{ 

}

// Use TestCleanup to run code after each test has run
[TestCleanup()]
public void MyTestCleanup() 
{ 

}

或:

// Use ClassInitialize to run code before running the first test in the class
[ClassInitialize()]
public static void MyClassInitialize(TestContext testContext) 
{ 

}

// Use ClassCleanup to run code after all tests in a class have run
[ClassCleanup()]
public static void MyClassCleanup() 
{ 

}