Пример #1
0
        protected override ITestFrameworkExecutor CreateExecutor(AssemblyName assemblyName)
        {
            IHost?    host = null;
            Exception?ex   = null;

            try
            {
                var startup = StartupLoader.CreateStartup(StartupLoader.GetStartupType(assemblyName));
                if (startup == null)
                {
                    return(new XunitTestFrameworkExecutor(assemblyName, SourceInformationProvider, DiagnosticMessageSink));
                }

                var hostBuilder = StartupLoader.CreateHostBuilder(startup, assemblyName) ??
                                  new HostBuilder().ConfigureHostConfiguration(builder =>
                                                                               builder.AddInMemoryCollection(new Dictionary <string, string> {
                    { HostDefaults.ApplicationKey, assemblyName.Name }
                }));

                StartupLoader.ConfigureHost(hostBuilder, startup);

                StartupLoader.ConfigureServices(hostBuilder, startup);

                host = hostBuilder.ConfigureServices(services => services
                                                     .AddSingleton(DiagnosticMessageSink)
                                                     .TryAddSingleton <ITestOutputHelperAccessor, TestOutputHelperAccessor>())
                       .Build();

                StartupLoader.Configure(host.Services, startup);
            }
            catch (Exception e)
            {
                ex = e;
            }

            return(new DependencyInjectionTestFrameworkExecutor(host, ex,
                                                                assemblyName, SourceInformationProvider, DiagnosticMessageSink));
        }