Решение Visual Studio:
(Проект 1) У меня есть проект API ASP .NET Framework, который использует Entity Framework для доступа к базе данных.
(Проект 2) Теперь я создал проект NUnit, который вызывает методы проекта 1. Некоторые методы проекта 1 вызывают методы EF, поэтому:
Но после выполнения тестовых методов я получаю:
Test method Test.SchedulerTesting.TestMethod5 threw exception: System.InvalidOperationException: No connection string named 'MyEntities1' could be found in the application config file.
Мой контент app.config (проект 2):
<?xml version = "1.0" encoding = "utf-8"?>
<configuration>
<configSections>
<!-- For more information on Entity Framework configuration, visit http://go.microsoft.com/fwlink/?LinkID=237468 -->
<section name = "entityFramework" type = "System.Data.Entity.Internal.ConfigFile.EntityFrameworkSection, EntityFramework, Version=6.0.0.0, Culture=neutral, PublicKeyToken=b77a5c561934e089" requirePermission = "false" />
</configSections>
<connectionStrings>
<add name = "MyEntities1" connectionString = "provider=System.Data.SqlClient;provider connection string="data source=**********;initial catalog=******;user id=sa;password=**********;MultipleActiveResultSets=True;App=EntityFramework"" providerName = "System.Data.EntityClient" />
</connectionStrings>
</configuration>
Мои первые строки Model.Context.cs (проект 1):
public partial class MyEntities1: DbContext
{
public MyEntities1()
: base("name=MyEntities1")
{
}
//...
}





Файл app.config применяется во время работы вашего производственного приложения. При запуске тестов под средством запуска тестов вам необходимо настроить конфигурацию для использования с вашими тестами. Обычно он будет содержать то же самое, что и ваша производственная конфигурация.
В вашем случае вам нужен файл конфигурации с именем что-то вроде project2.dll.config, чтобы конфигурация была доступна для ваших тестов. Visual Studio не будет автоматически переименовывать App.config для вас, потому что она не знает, что вы хотите использовать NUnit.
Забавно, первый пост в блоге, который я когда-либо написал (2005), говорит об этом и содержит гораздо больше деталей: http://charliepoole.org/technical/how-nunit-finds-config-files.html
Спасибо большое. Я использовал
ConfigurationManager.OpenExeConfiguration(ConfigurationUserLevel.None).FilePath, чтобы проверить, какой путь используется NUnit (testhost.dll.config), поэтому я переименовалApp.configвtesthost.dll.configи, наконец, смог запустить свои тесты!!