C# NUnit和App.config
我尝试测试我的实体类,但总是失败:C# NUnit和App.config,c#,database,entity-framework,tdd,nunit,C#,Database,Entity Framework,Tdd,Nunit,我尝试测试我的实体类,但总是失败: System.Data.MetadataException: 无法加载指定的元数据资源 我认为问题在于连接字符串和App.config。我尝试了很多东西:添加一些东西来构建事件,更改配置名称,将配置文件复制到解决方案文件夹、项目文件夹、项目文件夹/bin/debug,再次更改许多名称。。。但它仍然不起作用 我有一个包含3个项目的“AppProject”解决方案: “实体” “网络测试” “MVCApp” 实体项目有一个.edmx文件和简单的POCO类。当我
System.Data.MetadataException
:无法加载指定的元数据资源 我认为问题在于连接字符串和
App.config
。我尝试了很多东西:添加一些东西来构建事件,更改配置名称,将配置文件复制到解决方案文件夹、项目文件夹、项目文件夹/bin/debug,再次更改许多名称。。。但它仍然不起作用
我有一个包含3个项目的“AppProject”解决方案:
- “实体”
- “网络测试”
- “MVCApp”
.edmx
文件和简单的POCO类。当我将连接字符串从Entity/App.config
添加到MVCApp/Web.config
中时,“MVCApp”和数据库工作正常
当我将实体/App.config
复制到WebTest/App.config
中时,它不起作用。我不知道问题出在哪里
我使用视觉NUnit,但当我尝试在NUnit中启用时,它仍然不起作用
我的App.config
:
<connectionStrings>
<add name="UserDB"
connectionString="metadata=res://*/Model.Entity.csdl|
res://*/Model.Entity.ssdl|
res://*/Model.Entity.msl;
provider=System.Data.SqlClient;
provider connection string=
"Data Source=.\SQLExpress;
Initial Catalog=TestDB;
Integrated Security=True;
MultipleActiveResultSets=True""
providerName="System.Data.EntityClient" />
<!-- NOTE: line breaks in the above connection string have been inserted only
for better legibility. -->
</connectionStrings>
查看我的答案
您需要告诉nunit配置文件的名称。默认情况下,它会查找namespace.config运行webtest查看任务管理器中运行的处理器。我的是QTAgent32\u 40,请转到通常位于C:\Program Files(x86)\Microsoft Visual Studio 12.0\Common7\IDE下的配置文件。查找名为“QTAgent32_40.exe.config”的配置文件。用记事本编辑它,并将连接字符串复制粘贴到其中。这对我来说是个窍门。如果您使用的是数据库资源,那么您实际上不是在创建单元测试,而是在创建集成测试。您应该为单元测试模拟数据库连接。感谢您的回答。以前,当我测试DB时,我总是启动事务,对DB执行一些操作,检查结果并回滚事务。您是否在WebTest项目中引用实体项目?当然,我在WebTest项目中使用实体项目中的poco类:)单元测试的目的是测试您的代码,而不是测试代码所使用的数据框架。这就是为什么需要模拟数据库连接,以便可以伪造(并测试)任何连接问题。在单元测试中使用真实的数据库连接是不好的做法。