Невозможно загрузить Npgsql из теста xUnit библиотеки классов .NET - PullRequest
0 голосов
/ 02 мая 2018

Я немного изучил структуру сущностей и начал писать несколько тестовых примеров.

У меня возникает проблема, из-за которой я не могу загрузить сборку в тестовом примере, хотя я могу сделать это просто отлично (и версии сборок одинаковы) в самом приложении .net.

Я получаю ошибку:

Сообщение: System.IO.FileLoadException: не удалось загрузить файл или сборку 'Npgsql.EntityFrameworkCore.PostgreSQL, версия = 2.0.2.0, Культура = нейтральная, PublicKeyToken = 5d8b90d52f46fda7 'или один из зависимостей. Подпись строгого имени не может быть проверена. сборка могла быть подделана или подписана с задержкой, но не полностью подписан с правильным закрытым ключом. (Исключение из HRESULT: 0x80131045)

Работает в приложении .net

Я начал с того, что приложение Windows Forms работает нормально. Это использует SimpleInjector, EF Core, Npgsql против локальной базы данных postgres. Я получил это, чтобы работать просто отлично (создание БД, миграции и т. Д.), С DataContext (мой DbContext) загружается так:

DbContextOptionsBuilder builder = new DbContextOptionsBuilder<DataContext>();
DbContextOptions<DataContext> options = (DbContextOptions<DataContext>)builder.UseNpgsql(connectionString).Options;
            return new DataContext(options,NLog.LogManager.GetCurrentClassLogger());

Я могу провести простой тест перечисления организаций из БД. В настоящее время это делается в Form1.

Итак, на тесты (где у меня проблемы)

Я добавил те же зависимости в новую библиотеку классов «Тестирование» (EF Core, Npgsql и т. Д.). У меня также есть зависимость от проекта EntityFrameworkTest, поэтому я могу ссылаться на его модели.

Я упростил тестовый пример (OrgDBTest), чтобы он пытался создать контекст в своем конструкторе. Я сделал это так, что я знаю, что моя проблема не имеет ничего общего с SimpleInjector.

Я ожидаю, что тест запустится, и в его конструкторе будет создан DbContext. Однако я не могу заставить его загрузить сборку, чтобы я мог создать свой DbContext ... чтобы я мог продолжать создавать / играть с тестами.

Код здесь (довольно маленький): https://github.com/scornflake/entityframework-learn

Но потеряно, так как кажется, что я делаю то же самое в тестовом примере, что и в приложении, но загрузка сборки выглядит несколько иначе.

Есть идеи?

1 Ответ

0 голосов
/ 06 мая 2018

У меня нет основной причины, но переключение с xUnit на NUnit заставляет все работать. Я могу только предположить, что есть какая-то принципиальная разница с бегуном xUnit в отношении загрузки / безопасности сборки (хотелось бы знать, что это было, но я уже потратил много часов, чтобы добраться до этой точки!)

...