0

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

自创建数据库以来,支持“MyDBContext”上下文的模型已更改。手动删除/更新数据库,或使用 IDatabaseInitializer 实例调用 Database.SetInitializer。例如,DropCreateDatabaseIfModelChanges 策略将自动删除并重新创建数据库,并可选择使用新数据为其播种。

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

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

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

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

4

1 回答 1

1

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

// 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() 
{ 

}
于 2012-07-17T06:15:58.570 回答