У нас есть проект Visual Studio 2012 ASP.NET MVC с использованием Entity Framework 5.
Есть некоторые модульные тесты, которые зависят от базы данных. Настройка файла 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" />
Я получил:
System.Data.SqlClient.SqlException: Произошла ошибка активации файла. Имя физического файла «\unittestdb.mdf» может быть неверным. Диагностируйте и исправьте дополнительные ошибки и повторите операцию. СОЗДАТЬ БАЗУ ДАННЫХ не удалось. Некоторые перечисленные имена файлов не могут быть созданы. Проверьте связанные ошибки.
Похоже, он хочет, чтобы файл mdf уже существовал, что кажется странным, поскольку он пытается создать базу данных. Создание файла mdf вручную не изменяет сообщение об ошибке.
AppDomain.CurrentDomain.GetData("DataDirectory")
? - person Ladislav Mrnka   schedule 03.09.2012AppDomain.CurrentDomain.GetData("DataDirectory")
в модульном тесте равноnull
. - person Klas Mellbourn   schedule 03.09.2012SetData
, либо не используйте|DataDirectory|
в строке подключения, потому что этоnull
. - person Ladislav Mrnka   schedule 03.09.2012|DataDirecotry|` part does not help, I get the same error. However, replacing it with
C:\Temp` действительно помогает! Затем модульные тесты запускаются снова. Так что это большое улучшение. Вишенкой на торте было бы, если бы БД могла находиться на относительном пути. - person Klas Mellbourn   schedule 03.09.2012