Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/csharp/280.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
C# NUnit和App.config_C#_Database_Entity Framework_Tdd_Nunit - Fatal编程技术网

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=
                                  &quot;Data Source=.\SQLExpress;
                                  Initial Catalog=TestDB;
                                  Integrated Security=True;
                                  MultipleActiveResultSets=True&quot;"
       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类:)单元测试的目的是测试您的代码,而不是测试代码所使用的数据框架。这就是为什么需要模拟数据库连接,以便可以伪造(并测试)任何连接问题。在单元测试中使用真实的数据库连接是不好的做法。