public static IObjectContainer CreateContainer(IRuntimeConfigurationProvider configurationProvider = null) { var container = new ObjectContainer(); RegisterDefaults(container); if (configurationProvider != null) { container.RegisterInstanceAs(configurationProvider); } configurationProvider = configurationProvider ?? container.Resolve <IRuntimeConfigurationProvider>(); var pluginLoader = container.Resolve <IRuntimePluginLoader>(); var plugins = configurationProvider.GetPlugins().Select(pd => LoadPlugin(pluginLoader, pd)).ToArray(); foreach (var plugin in plugins) { plugin.RegisterDefaults(container); } RuntimeConfiguration runtimeConfiguration = new RuntimeConfiguration(); foreach (var defaultsProvider in container.Resolve <IDictionary <string, IRuntimeConfigurationDefaultsProvider> >().Values) { defaultsProvider.SetDefaultConfiguration(runtimeConfiguration); } configurationProvider.LoadConfiguration(runtimeConfiguration); #if !BODI_LIMITEDRUNTIME if (runtimeConfiguration.CustomDependencies != null) { container.RegisterFromConfiguration(runtimeConfiguration.CustomDependencies); } #endif container.RegisterInstanceAs(runtimeConfiguration); if (runtimeConfiguration.TraceListenerType != null) { container.RegisterTypeAs <ITraceListener>(runtimeConfiguration.TraceListenerType); } if (runtimeConfiguration.RuntimeUnitTestProvider != null) { container.RegisterInstanceAs(container.Resolve <IUnitTestRuntimeProvider>(runtimeConfiguration.RuntimeUnitTestProvider)); } foreach (var plugin in plugins) { plugin.RegisterCustomizations(container, runtimeConfiguration); } return(container); }
public virtual IObjectContainer CreateGlobalContainer(Assembly testAssembly, IRuntimeConfigurationProvider configurationProvider = null) { var container = new ObjectContainer(); container.RegisterInstanceAs <IContainerBuilder>(this); RegisterDefaults(container); var testAssemblyProvider = container.Resolve <ITestAssemblyProvider>(); testAssemblyProvider.RegisterTestAssembly(testAssembly); if (configurationProvider != null) { container.RegisterInstanceAs(configurationProvider); } configurationProvider = configurationProvider ?? container.Resolve <IRuntimeConfigurationProvider>(); container.RegisterTypeAs <RuntimePluginEvents, RuntimePluginEvents>(); //NOTE: we need this unnecessary registration, due to a bug in BoDi (does not inherit non-registered objects) var runtimePluginEvents = container.Resolve <RuntimePluginEvents>(); SpecFlowConfiguration specFlowConfiguration = ConfigurationLoader.GetDefault(); specFlowConfiguration = configurationProvider.LoadConfiguration(specFlowConfiguration); if (specFlowConfiguration.CustomDependencies != null) { container.RegisterFromConfiguration(specFlowConfiguration.CustomDependencies); } var unitTestProviderConfigration = container.Resolve <UnitTestProviderConfiguration>(); LoadPlugins(configurationProvider, container, runtimePluginEvents, specFlowConfiguration, unitTestProviderConfigration, testAssembly); runtimePluginEvents.RaiseConfigurationDefaults(specFlowConfiguration); runtimePluginEvents.RaiseRegisterGlobalDependencies(container); container.RegisterInstanceAs(specFlowConfiguration); if (unitTestProviderConfigration != null) { container.RegisterInstanceAs(container.Resolve <IUnitTestRuntimeProvider>(unitTestProviderConfigration.UnitTestProvider ?? ConfigDefaults.UnitTestProviderName)); } runtimePluginEvents.RaiseCustomizeGlobalDependencies(container, specFlowConfiguration); container.Resolve <IConfigurationLoader>().TraceConfigSource(container.Resolve <ITraceListener>(), specFlowConfiguration); return(container); }
public virtual IObjectContainer CreateContainer(IRuntimeConfigurationProvider configurationProvider = null) { var container = new ObjectContainer(); container.RegisterInstanceAs <ITestRunContainerBuilder>(this); RegisterDefaults(container); if (configurationProvider != null) { container.RegisterInstanceAs(configurationProvider); } configurationProvider = configurationProvider ?? container.Resolve <IRuntimeConfigurationProvider>(); var plugins = LoadPlugins(configurationProvider, container); foreach (var plugin in plugins) { plugin.RegisterDependencies(container); } RuntimeConfiguration runtimeConfiguration = new RuntimeConfiguration(); foreach (var plugin in plugins) { plugin.RegisterConfigurationDefaults(runtimeConfiguration); } configurationProvider.LoadConfiguration(runtimeConfiguration); #if !BODI_LIMITEDRUNTIME if (runtimeConfiguration.CustomDependencies != null) { container.RegisterFromConfiguration(runtimeConfiguration.CustomDependencies); } #endif container.RegisterInstanceAs(runtimeConfiguration); if (runtimeConfiguration.RuntimeUnitTestProvider != null) { container.RegisterInstanceAs(container.Resolve <IUnitTestRuntimeProvider>(runtimeConfiguration.RuntimeUnitTestProvider)); } foreach (var plugin in plugins) { plugin.RegisterCustomizations(container, runtimeConfiguration); } return(container); }
public virtual IObjectContainer CreateGlobalContainer(IRuntimeConfigurationProvider configurationProvider = null) { var container = new ObjectContainer(); container.RegisterInstanceAs <IContainerBuilder>(this); RegisterDefaults(container); if (configurationProvider != null) { container.RegisterInstanceAs(configurationProvider); } configurationProvider = configurationProvider ?? container.Resolve <IRuntimeConfigurationProvider>(); container.RegisterTypeAs <RuntimePluginEvents, RuntimePluginEvents>(); //NOTE: we need this unnecessary registration, due to a bug in BoDi (does not inherit non-registered objects) var runtimePluginEvents = container.Resolve <RuntimePluginEvents>(); LoadPlugins(configurationProvider, container, runtimePluginEvents); runtimePluginEvents.RaiseRegisterGlobalDependencies(container); RuntimeConfiguration runtimeConfiguration = new RuntimeConfiguration(); runtimePluginEvents.RaiseConfigurationDefaults(runtimeConfiguration); configurationProvider.LoadConfiguration(runtimeConfiguration); #if !BODI_LIMITEDRUNTIME if (runtimeConfiguration.CustomDependencies != null) { container.RegisterFromConfiguration(runtimeConfiguration.CustomDependencies); } #endif container.RegisterInstanceAs(runtimeConfiguration); if (runtimeConfiguration.RuntimeUnitTestProvider != null) { container.RegisterInstanceAs(container.Resolve <IUnitTestRuntimeProvider>(runtimeConfiguration.RuntimeUnitTestProvider)); } runtimePluginEvents.RaiseCustomizeGlobalDependencies(container, runtimeConfiguration); return(container); }
public static IObjectContainer CreateContainer(IRuntimeConfigurationProvider configurationProvider = null) { var container = new ObjectContainer(); RegisterDefaults(container); if (configurationProvider != null) container.RegisterInstanceAs(configurationProvider); configurationProvider = configurationProvider ?? container.Resolve<IRuntimeConfigurationProvider>(); var pluginLoader = container.Resolve<IRuntimePluginLoader>(); var plugins = configurationProvider.GetPlugins().Select(pd => LoadPlugin(pluginLoader, pd)).ToArray(); foreach (var plugin in plugins) { plugin.RegisterDefaults(container); } RuntimeConfiguration runtimeConfiguration = new RuntimeConfiguration(); foreach (var defaultsProvider in container.Resolve<IDictionary<string, IRuntimeConfigurationDefaultsProvider>>().Values) { defaultsProvider.SetDefaultConfiguration(runtimeConfiguration); } configurationProvider.LoadConfiguration(runtimeConfiguration); #if !BODI_LIMITEDRUNTIME if (runtimeConfiguration.CustomDependencies != null) container.RegisterFromConfiguration(runtimeConfiguration.CustomDependencies); #endif container.RegisterInstanceAs(runtimeConfiguration); if (runtimeConfiguration.TraceListenerType != null) container.RegisterTypeAs<ITraceListener>(runtimeConfiguration.TraceListenerType); if (runtimeConfiguration.RuntimeUnitTestProvider != null) container.RegisterInstanceAs(container.Resolve<IUnitTestRuntimeProvider>(runtimeConfiguration.RuntimeUnitTestProvider)); foreach (var plugin in plugins) { plugin.RegisterCustomizations(container, runtimeConfiguration); } return container; }
public virtual IObjectContainer CreateContainer(IRuntimeConfigurationProvider configurationProvider = null) { var container = new ObjectContainer(); container.RegisterInstanceAs<ITestRunContainerBuilder>(this); RegisterDefaults(container); if (configurationProvider != null) container.RegisterInstanceAs(configurationProvider); configurationProvider = configurationProvider ?? container.Resolve<IRuntimeConfigurationProvider>(); var plugins = LoadPlugins(configurationProvider, container); foreach (var plugin in plugins) plugin.RegisterDependencies(container); RuntimeConfiguration runtimeConfiguration = new RuntimeConfiguration(); foreach (var plugin in plugins) plugin.RegisterConfigurationDefaults(runtimeConfiguration); configurationProvider.LoadConfiguration(runtimeConfiguration); #if !BODI_LIMITEDRUNTIME if (runtimeConfiguration.CustomDependencies != null) container.RegisterFromConfiguration(runtimeConfiguration.CustomDependencies); #endif container.RegisterInstanceAs(runtimeConfiguration); if (runtimeConfiguration.RuntimeUnitTestProvider != null) container.RegisterInstanceAs(container.Resolve<IUnitTestRuntimeProvider>(runtimeConfiguration.RuntimeUnitTestProvider)); foreach (var plugin in plugins) plugin.RegisterCustomizations(container, runtimeConfiguration); return container; }
public virtual IObjectContainer CreateGlobalContainer(IRuntimeConfigurationProvider configurationProvider = null) { var container = new ObjectContainer(); container.RegisterInstanceAs<IContainerBuilder>(this); RegisterDefaults(container); if (configurationProvider != null) container.RegisterInstanceAs(configurationProvider); configurationProvider = configurationProvider ?? container.Resolve<IRuntimeConfigurationProvider>(); container.RegisterTypeAs<RuntimePluginEvents, RuntimePluginEvents>(); //NOTE: we need this unnecessary registration, due to a bug in BoDi (does not inherit non-registered objects) var runtimePluginEvents = container.Resolve<RuntimePluginEvents>(); LoadPlugins(configurationProvider, container, runtimePluginEvents); runtimePluginEvents.RaiseRegisterGlobalDependencies(container); RuntimeConfiguration runtimeConfiguration = new RuntimeConfiguration(); runtimePluginEvents.RaiseConfigurationDefaults(runtimeConfiguration); configurationProvider.LoadConfiguration(runtimeConfiguration); #if !BODI_LIMITEDRUNTIME if (runtimeConfiguration.CustomDependencies != null) container.RegisterFromConfiguration(runtimeConfiguration.CustomDependencies); #endif container.RegisterInstanceAs(runtimeConfiguration); if (runtimeConfiguration.RuntimeUnitTestProvider != null) container.RegisterInstanceAs(container.Resolve<IUnitTestRuntimeProvider>(runtimeConfiguration.RuntimeUnitTestProvider)); runtimePluginEvents.RaiseCustomizeGlobalDependencies(container, runtimeConfiguration); return container; }