单元测试项目中的连接字符串,用于引用app_data文件夹中的数据库

ddd*_*ddd 7 asp.net-mvc unit-testing connection-string

我希望在我的单元测试项目中引用我的数据库文件.这是一个ASP.NET MVC应用程序.

请注意:我知道我不应该在我的单元测试中访问数据库,但这是为了快速修复我需要通过的一个测试.

在下一个里程碑之后,我将嘲笑数据库访问方法等.

所以这是我的mvc app web config中的连接字符串和单元测试ap.config文件

<add name="DBConnectionString" connectionString="Data Source=.\SQLEXPRESS;AttachDbFilename=|DataDirectory|\DB.MDF;Integrated Security=True;User Instance=True"
  providerName="System.Data.SqlClient" />
Run Code Online (Sandbox Code Playgroud)

当我运行测试时,我收到一个错误:

Test method
ED.Tests.Controllers.CandidateControllerTest.PersonalDetailsStepPostShouldRedisplayIfNoSurnameSupplied 
threw exception:  System.Data.SqlClient.SqlException: 
An attempt to attach an auto-named database for file C:\Users\Desktop\ED\TestResults\LAPTOP-D 2009-07-22 18_16_20\Out\DB.MDF failed. 
A database with the same name exists, or specified file cannot be opened, or it is located on UNC share.
Run Code Online (Sandbox Code Playgroud)

在我看来,连接字符串是错误的,但我不知道如何正确设置路径.我试过添加\ ..\..和目录名等.

Cra*_*ntz 4

每次测试运行时,MSTest 都会在完全不同的文件夹中运行单元测试程序集。这个想法是,每次运行都是与之前和后续运行完全隔离的情况。告诉它与应用程序的其余部分一起复制数据文件实际上有点痛苦。您需要右键单击您的解决方案(不是您的项目),选择添加,创建新的测试运行配置。然后,您需要编辑测试运行配置并指定将哪些文件复制到测试执行文件夹。您的解决方案目录应该有一个名为 TestResults 的同级目录,其中包含用于每次测试运行的文件夹。