Эта часть
var assemblies = AppDomain.CurrentDomain.GetAssemblies().Where(
x => x.FullName.Contains($"test.{type.ToString()}") || x.FullName.Contains($"test.Common")).ToArray();
Запустите один отдельный тест в режиме отладки или передайте содержимое:
AppDomain.CurrentDomain.GetAssemblies()
И я бы предположил, что ни одно из предложений where не подходит при выполнении интеграционных тестов, но это трудно сказать без дополнительной информации. Посмотрите, что выводится, когда вы запустите тест, это будет ключ.
Так что
services.AddMediatR(assemblies.GetAssemblies);
Не регистрирует ваши обработчики, так как результат равен нулю / пуст.
Если это не создает проблемы, вы можете попытаться зарегистрировать минимум обработчиков вручную. Затем вы можете увидеть, является ли процесс регистрации причиной проблемы или нет. Поэтому вручную зарегистрируйтесь так:
services.AddScoped(typeof(ISomeType), typeof(SomeType));
или
services.AddScoped<ISomeType, SomeType>();
Если вы сделаете это, вы, по крайней мере, удалите все элементы отражения из GetAssemblies () из процесса. Я всегда пробовал бы изолировать один тест и отлаживать его.
Надеюсь, это поможет