Kla*_*urn 61 unit-testing mstest entity-framework-5 localdb visual-studio-2012
我们有一个使用Entity Framework 5的Visual Studio 2012 ASP.NET MVC项目.
有些单元测试依赖于数据库.在测试项目中设置app.config文件以使用中央SQL Server数据库可以正常工作.
但是,使用LocalDb会更好,因此每个开发人员在运行测试时都有自己的数据库.特别是因为我们希望DropCreateDatabaseAlways在运行时设置测试.
但是,我无法让设置工作.如果我在app.config中尝试这个:
<add name="TestDb"
connectionString="Data Source=(LocalDb)\v11.0;Initial Catalog=unittestdb;
Integrated Security=SSPI;AttachDBFilename=|DataDirectory|\unittestdb.mdf"
providerName="System.Data.SqlClient" />
Run Code Online (Sandbox Code Playgroud)
我明白了:
System.Data.SqlClient.SqlException:发生文件激活错误.物理文件名'\ unittestdb.mdf'可能不正确.诊断并更正其他错误,然后重试该操作.CREATE DATABASE失败.无法创建列出的某些文件名.检查相关错误.
听起来它想要mdf文件已经存在,这似乎很奇怪,因为它试图创建数据库.手动创建mdf文件不会更改错误消息.
小智 34
尝试:
AppDomain.CurrentDomain.SetData(
"DataDirectory", Path.Combine(AppDomain.CurrentDomain.BaseDirectory, ""));
Run Code Online (Sandbox Code Playgroud)
这将在/bin/Debug/yourdbname.mdf上创建Db文件
Jup*_*aol 10
我会用:
// Declare this property - this is set by MSTest
public TestContext TestContext { get; set; }
// In test initialization - note the signature should be exactly this
// A static void method with one argument of type TestContext
[ClassInitialize]
public static void SetUp(TestContext context)
{
AppDomain.CurrentDomain.SetData("DataDirectory", Path.Combine(context.TestDeploymentDir, string.Empty));
}
Run Code Online (Sandbox Code Playgroud)
您可能会遇到问题AppDomain.CurrentDomain.BaseDirectory,而是使用:context.TestDeploymentDir
| 归档时间: |
|
| 查看次数: |
17949 次 |
| 最近记录: |