У меня есть ряд тестов в моем решении. Тесты распределены по нескольким различным тестовым проектам. Я использую Entity Framework 6.3 с конфигурацией на основе кода. Мой класс DbConfiguration
выглядит следующим образом
namespace MySolution.Data
{
public class MyEntityConfiguration : DbConfiguration
{
public MyEntityConfiguration()
{
AddInterceptor(new StringTrimmerInterceptor());
}
}
public class StringTrimmerInterceptor : IDbCommandTreeInterceptor
{
// ... do stuff
}
}
Когда я нажимаю кнопку «Выполнить все» для своих тестов, мои тесты, использующие мой контекст Entity Framework, завершаются с этой ошибкой.
System.InvalidOperationException: The default DbConfiguration instance was used by the Entity Framework before the 'MyEntityConfiguration' type was discovered. An instance of 'MyEntityConfiguration' must be set at application start before using any Entity Framework features or must be registered in the application's config file.
Однако, если я выделю все свои тесты и нажму «Выполнить выбранные тесты», все мои тесты пройдут успешно.
Я могу сделатьмои тесты завершаются успешно, когда я нажимаю Run All, если я редактирую app.config
тестового проекта и добавляю codeConfigurationType="MySolution.Data.MyEntityConfiguration, MySolution.Data"
в строку <entityFramework>
.
Мои вопросы:
- ПочемуЯ должен поместить
codeConfigurationType
в мой app.config
файл, чтобы это работало? Разве Entity Framework 6.3 не позволяет мне делать это через DbConfiguration
? Конфигурация с использованием DbConfiguration
работает правильно, когда я запускаю свое приложение, но, по-видимому, он не работает во время тестов. - Почему мои тесты не выполняются, когда я запускаю их все, нажимая Run All, ноодни и те же тесты завершаются успешно, если я запускаю все свои тесты, выделяя их и нажимая «Выполнить выбранные тесты»?