C# EF在测试之间删除数据库
我正在使用Specflow为我的UI编写测试。某些测试更改了我的数据库,因此我无法重新运行某些测试。当我使用EF时,我决定简单地删除我的数据库(因为EF将创建一个新的数据库并为其种子)。当我运行测试时,我的MVC项目是开放的。我试图用以下代码删除我的数据库:C# EF在测试之间删除数据库,c#,specflow,C#,Specflow,我正在使用Specflow为我的UI编写测试。某些测试更改了我的数据库,因此我无法重新运行某些测试。当我使用EF时,我决定简单地删除我的数据库(因为EF将创建一个新的数据库并为其种子)。当我运行测试时,我的MVC项目是开放的。我试图用以下代码删除我的数据库: [BeforeFeature] public static void DropDatabase() { Database.Delete("SampleDbName"); } 但问题是,我无法删除数据库,因为它目前正在使用中。 然后
[BeforeFeature]
public static void DropDatabase()
{
Database.Delete("SampleDbName");
}
但问题是,我无法删除数据库,因为它目前正在使用中。
然后我尝试了两种解决方案:
我的目标是在不重新启动MVC项目的情况下使测试无法重新启动。是否有一些解决方案可以解决这个问题?.Net Core或Framework?@MichaelRandall Framework(ef6)理想情况下,您应该模拟数据库,而不是实际操作数据库。有什么理由不这么做吗?试着模仿一下Austin在VS的单元测试项目中所写的。还有,为什么要删除整个数据库?截断还不够吗?在EF中,您可以使用Clear()@austinfrench删除所有实体。我过去在单元测试中模拟数据库,但现在必须使用真实数据库