Я создал проект интеграционного тестирования, в котором есть ссылка на встроенный проект Rest API. Net Core 3.1
При запуске моего Rest Api я немного размышляю, чтобы загрузить некоторые классы, закодированные для других сборки, которые у меня есть (например, плагины, которые я загружаю динамически), но я делаю некоторые открытия с помощью отражения. Я не указываю путь к сборкам, я просто добавляю их в качестве ссылки в свой проект Rest Api и загружаю их таким образом
var assemblies = Assembly.GetEntryAssembly()?.GetReferencedAssemblies().Select(Assembly.Load);
Теперь, когда я запускаю свой проект интеграционного тестирования, это не так. т работать. В моем тестовом проекте интеграции есть ссылка на мой проект Rest API, а также я использую подход
IClassFixture
, который запускает запуск моего проекта Rest Api перед выполнением теста, но контекст выполнения (основной поток) в этом случае - это тестовый проект. Когда запуск моего Rest Api выполняется из основного потока Integration Test, никакие ссылочные сборки не загружаются.
Основная проблема заключается в том, что в моем тестовом проекте не было тех же ссылок, что и в моем проекте Rest Api, поэтому Я добавляю их вместе с частью тестового проекта интеграции.
это не сработало
Кроме того, я попытался создать фиктивные объекты, определенные в этих сборках, и использовать их внутри моего тестового проекта интеграции. Если вы не создаете фиктивный объект, компилятор не увидит, что вы используете какие-либо определения / классы из одной из этих сборок, и не включит их в список ReferenceAssemblies. См. Идею ниже
private void CreateDummiesObject()
{
//To make the discovery process happen on assemblies that are referenced but not used until the runtime
//Core project
TypeHelper th = null;
//Data
Repository<Summary> rep = null;
//Data.Web.Api1
WebApi1DbContext dbContext = null;
}
это не сработало
Есть идеи, как я могу решить эту проблему?