/// <summary> /// Custom SpecFlow plugin taking care of automatically reporting SpecFlow scenario information to TestProject. /// </summary> /// <param name="runtimePluginEvents">Runtime plugin events.</param> /// <param name="runtimePluginParameters">Parameters for the runtime plugin events.</param> /// <param name="unitTestProviderConfiguration">Unit test provider configuration.</param> public void Initialize( RuntimePluginEvents runtimePluginEvents, RuntimePluginParameters runtimePluginParameters, UnitTestProviderConfiguration unitTestProviderConfiguration) { runtimePluginEvents.CustomizeGlobalDependencies += this.RuntimePluginEvents_CustomizeGlobalDependencies; }
public void Initialize(RuntimePluginEvents runtimePluginEvents, RuntimePluginParameters runtimePluginParameters, UnitTestProviderConfiguration unitTestProviderConfiguration) { runtimePluginEvents.RegisterGlobalDependencies += (sender, args) => { args.ObjectContainer.RegisterTypeAs <CustomBindingFactory, IBindingFactory>(); }; }
public void Initialize(RuntimePluginEvents runtimePluginEvents, RuntimePluginParameters runtimePluginParameters, UnitTestProviderConfiguration unitTestProviderConfiguration) { runtimePluginEvents.CustomizeGlobalDependencies += (sender, args) => { if (!args.ObjectContainer.IsRegistered <IServiceCollectionFinder>()) { lock (registrationLock) { if (!args.ObjectContainer.IsRegistered <IServiceCollectionFinder>()) { args.ObjectContainer.RegisterTypeAs <DependencyInjectionTestObjectResolver, ITestObjectResolver>(); args.ObjectContainer.RegisterTypeAs <ServiceCollectionFinder, IServiceCollectionFinder>(); } } args.ObjectContainer.Resolve <IServiceCollectionFinder>(); } }; runtimePluginEvents.CustomizeScenarioDependencies += (sender, args) => { args.ObjectContainer.RegisterFactoryAs <IServiceProvider>(() => { var serviceCollectionFinder = args.ObjectContainer.Resolve <IServiceCollectionFinder>(); var createScenarioServiceCollection = serviceCollectionFinder.GetCreateScenarioServiceCollection(); var services = createScenarioServiceCollection(); RegisterSpecFlowDependencies(args.ObjectContainer, services); return(services.BuildServiceProvider()); }); }; }
public void Initialize(RuntimePluginEvents runtimePluginEvents, RuntimePluginParameters runtimePluginParameters, UnitTestProviderConfiguration unitTestProviderConfiguration) { runtimePluginEvents.RegisterGlobalDependencies += RuntimePluginEventsOnRegisterGlobalDependencies; runtimePluginEvents.CustomizeGlobalDependencies += RuntimePluginEvents_CustomizeGlobalDependencies; runtimePluginEvents.CustomizeScenarioDependencies += RuntimePluginEvents_CustomizeScenarioDependencies; unitTestProviderConfiguration.UseUnitTestProvider("nunit"); }
public void Initialize(RuntimePluginEvents runtimePluginEvents, RuntimePluginParameters runtimePluginParameters) { runtimePluginEvents.CustomizeGlobalDependencies += (sender, args) => { // temporary fix for CustomizeGlobalDependencies called multiple times // see https://github.com/techtalk/SpecFlow/issues/948 if (!args.ObjectContainer.IsRegistered <IContainerBuilderFinder>()) { args.ObjectContainer.RegisterTypeAs <AutofacTestObjectResolver, ITestObjectResolver>(); args.ObjectContainer.RegisterTypeAs <ContainerBuilderFinder, IContainerBuilderFinder>(); // workaround for parallel execution issue - this should be rather a feature in BoDi? args.ObjectContainer.Resolve <IContainerBuilderFinder>(); } }; runtimePluginEvents.CustomizeScenarioDependencies += (sender, args) => { args.ObjectContainer.RegisterFactoryAs <IComponentContext>(() => { var containerBuilderFinder = args.ObjectContainer.Resolve <IContainerBuilderFinder>(); var createScenarioContainerBuilder = containerBuilderFinder.GetCreateScenarioContainerBuilder(); var containerBuilder = createScenarioContainerBuilder(); var container = containerBuilder.Build(); return(container.BeginLifetimeScope()); }); }; }
public void Initialize( RuntimePluginEvents runtimePluginEvents, RuntimePluginParameters runtimePluginParameters, UnitTestProviderConfiguration unitTestProviderConfiguration) { runtimePluginEvents.CustomizeScenarioDependencies += (sender, args) => RegisterRuntimeDependencies(args.ObjectContainer); }
public void Feature_contexts_persist_across_scenarios() { var plugin = new WindsorPlugin(); var events = new RuntimePluginEvents(); var globalContainer = new ObjectContainer(); var featureContainer = new ObjectContainer(globalContainer); var scenarioContainer1 = new ObjectContainer(featureContainer); var scenarioContainer2 = new ObjectContainer(featureContainer); var context = new FeatureContext(featureContainer, new FeatureInfo(CultureInfo.CurrentCulture, "", "", ""), ConfigurationLoader.GetDefault()); globalContainer.RegisterInstanceAs <IContainerFinder>(new SpecificContainerFinder(() => new WindsorContainer())); featureContainer.RegisterInstanceAs(context); plugin.Initialize(events, null, null); events.RaiseCustomizeGlobalDependencies(globalContainer, null); events.RaiseCustomizeFeatureDependencies(featureContainer); events.RaiseCustomizeScenarioDependencies(scenarioContainer1); var context1 = scenarioContainer1.Resolve <IWindsorContainer>().Resolve <FeatureContext>(); events.RaiseCustomizeScenarioDependencies(scenarioContainer2); var context2 = scenarioContainer2.Resolve <IWindsorContainer>().Resolve <FeatureContext>(); context2.Should().BeSameAs(context1); }
public void Initialize(RuntimePluginEvents runtimePluginEvents, RuntimePluginParameters runtimePluginParameters) { runtimePluginEvents.CustomizeTestThreadDependencies += (sender, args) => { args.ObjectContainer.RegisterTypeAs <TestRunner, ITestRunner>(); }; }
public void Initialize(RuntimePluginEvents runtimePluginEvents, RuntimePluginParameters runtimePluginParameters) { ReporterManager.Initialize(TestingFramework.SpecFlow, new GhprSpecFlowTestDataProvider()); var specFlowHelper = new GhprSpecFlowHelper(); GhprPluginHelper.Init(specFlowHelper); runtimePluginEvents.CustomizeTestThreadDependencies += CustomizeTestThreadDependencies; }
public void Initialize(RuntimePluginEvents runtimePluginEvents, RuntimePluginParameters runtimePluginParameters) { // Wire up our Windsor resolver & container locater to the // global IOC container runtimePluginEvents.CustomizeGlobalDependencies += (sender, args) => { // temporary fix for CustomizeGlobalDependencies called multiple times // see https://github.com/techtalk/SpecFlow/issues/948 if (args.ObjectContainer.IsRegistered <IContainerFinder>()) { return; } args.ObjectContainer.RegisterTypeAs <WindsorResolver, ITestObjectResolver>(); args.ObjectContainer.RegisterTypeAs <ContainerFinder, IContainerFinder>(); }; // Replace the IOC container with our windsor container // which is defined in a method marked with the [ScenarioDependecies] Attribute runtimePluginEvents.CustomizeScenarioDependencies += (sender, args) => { args.ObjectContainer.RegisterFactoryAs(() => { var containerBuilderFinder = args.ObjectContainer.Resolve <IContainerFinder>(); var containerBuilder = containerBuilderFinder.GetCreateScenarioContainer(); var container = containerBuilder.Invoke(); return(container); }); }; }
public void Initialize(RuntimePluginEvents runtimePluginEvents, RuntimePluginParameters runtimePluginParameters) { runtimePluginEvents.RegisterGlobalDependencies += (sender, args) => args.ObjectContainer.RegisterInstanceAs <IUnitTestRuntimeProvider>(new NUnitRuntimeProvider(), "Unickq.SpecFlow.Selenium.Allure"); runtimePluginEvents.CustomizeTestThreadDependencies += (sender, args) => args.ObjectContainer.RegisterTypeAs <AllureTestTracerWrapper, ITestTracer>(); }
public void Initialize(RuntimePluginEvents runtimePluginEvents, RuntimePluginParameters runtimePluginParameters) { runtimePluginEvents.CustomizeGlobalDependencies += (sender, args) => args.ObjectContainer.RegisterTypeAs <AllureBindingInvoker, IBindingInvoker>(); runtimePluginEvents.CustomizeTestThreadDependencies += (sender, args) => args.ObjectContainer.RegisterTypeAs <AllureTestTracerWrapper, ITestTracer>(); }
public void Initialize(RuntimePluginEvents runtimePluginEvents, RuntimePluginParameters runtimePluginParameters, UnitTestProviderConfiguration unitTestProviderConfiguration) { runtimePluginEvents.CustomizeTestThreadDependencies += (sender, e) => { e.ObjectContainer.RegisterTypeAs <OctaneGherkinReportAddIn, ITestTracer>(); }; }
public void Initialize(RuntimePluginEvents runtimePluginEvents, RuntimePluginParameters runtimePluginParameters, UnitTestProviderConfiguration unitTestProviderConfiguration) { // Wire-up Windsor resolver and container locator to the global IOC container runtimePluginEvents.CustomizeGlobalDependencies += RuntimePluginEvents_CustomizeGlobalDependencies; // Replace the global IOC container without windsor container // which is defined in the method mark with attribute ScenarioDependencies runtimePluginEvents.CustomizeScenarioDependencies += RuntimePluginEvents_CustomizeScenarioDependencies; }
public void Initialize(RuntimePluginEvents runtimePluginEvents, RuntimePluginParameters runtimePluginParameters, UnitTestProviderConfiguration unitTestProviderConfiguration) { runtimePluginEvents.CustomizeTestThreadDependencies += (sender, args) => { args.ObjectContainer.RegisterTypeAs <DSLTestRunner, ITestRunner>(); args.ObjectContainer.RegisterTypeAs <ParameterTransform, IParameterTransform>(); }; }
public void Initialize(RuntimePluginEvents runtimePluginEvents, RuntimePluginParameters runtimePluginParameters) { if (Configuration.ReportPortal.Enabled) { runtimePluginEvents.CustomizeGlobalDependencies += (sender, e) => { e.ObjectContainer.RegisterTypeAs <SafeBindingInvoker, IBindingInvoker>(); }; } }
public void Initialize(RuntimePluginEvents runtimePluginEvents, RuntimePluginParameters runtimePluginParameters, UnitTestProviderConfiguration unitTestProviderConfiguration) { runtimePluginEvents.CustomizeGlobalDependencies += (sender, args) => { if (args.SpecFlowConfiguration.StopAtFirstError) { args.ObjectContainer.RegisterTypeAs <DefaultListener, ITraceListener>(); } }; }
public void Initialize(RuntimePluginEvents runtimePluginEvents, RuntimePluginParameters runtimePluginParameters) { runtimePluginEvents.CustomizeGlobalDependencies += (sender, args) => { if (args.SpecFlowConfiguration.StopAtFirstError) { args.ObjectContainer.RegisterTypeAs <CustomTestRunnerFactory, ITestRunnerFactory>(); } }; }
/// <summary> /// Custom SpecFlow plugin taking care of automatically reporting SpecFlow scenario information to TestProject. /// </summary> /// <param name="runtimePluginEvents">Runtime plugin events.</param> /// <param name="runtimePluginParameters">Parameters for the runtime plugin events.</param> /// <param name="unitTestProviderConfiguration">Unit test provider configuration.</param> public void Initialize( RuntimePluginEvents runtimePluginEvents, RuntimePluginParameters runtimePluginParameters, UnitTestProviderConfiguration unitTestProviderConfiguration) { runtimePluginEvents.CustomizeGlobalDependencies += (sender, args) => args.ObjectContainer.RegisterTypeAs <TestProjectBindingInvoker, IBindingInvoker>(); runtimePluginEvents.CustomizeTestThreadDependencies += (sender, args) => args.ObjectContainer.RegisterTypeAs <TestProjectTestTracerWrapper, ITestTracer>(); }
public void Initialize(RuntimePluginEvents runtimePluginEvents, RuntimePluginParameters runtimePluginParameters) { ReporterManager.Initialize(TestingFramework.SpecFlow, new GhprMSTestSpecFlowTestDataProvider()); ILogger logger = new EmptyLogger(); ReporterManager.Action(r => { logger = r.Logger; }); var specFlowHelper = new GhprMSTestSpecFlowHelper(logger); GhprPluginHelper.Init(specFlowHelper); runtimePluginEvents.CustomizeTestThreadDependencies += CustomizeTestThreadDependencies; }
public void Should_be_able_to_change_default_configuration_from_a_plugin() { var pluginWithCustomConfiguration = new PluginWithCustomConfiguration(conf => conf.StopAtFirstError = true); var runtimePluginEvents = new RuntimePluginEvents(); pluginWithCustomConfiguration.Initialize(runtimePluginEvents, new RuntimePluginParameters(), new UnitTestProviderConfiguration()); var specFlowConfiguration = ConfigurationLoader.GetDefault(); runtimePluginEvents.RaiseConfigurationDefaults(specFlowConfiguration); specFlowConfiguration.StopAtFirstError.Should().BeTrue(); }
private IWindsorContainer CreateContainerViaPlugin(ObjectContainer globalContainer, ObjectContainer scenarioContainer) { var plugin = new WindsorPlugin(); var events = new RuntimePluginEvents(); globalContainer.RegisterInstanceAs <IContainerFinder>(new SpecificContainerFinder(() => new WindsorContainer())); plugin.Initialize(events, null, null); events.RaiseCustomizeGlobalDependencies(globalContainer, null); events.RaiseCustomizeScenarioDependencies(scenarioContainer); return(scenarioContainer.Resolve <IWindsorContainer>()); }
public void Should_be_able_to_override_test_runner_registration_from_a_plugin() { var pluginWithCustomTestThreadDependencies = new PluginWithCustomTestThreadDependencies(oc => oc.RegisterTypeAs <CustomTraceListener, ITraceListener>()); var runtimePluginEvents = new RuntimePluginEvents(); pluginWithCustomTestThreadDependencies.Initialize(runtimePluginEvents, new RuntimePluginParameters(), new UnitTestProviderConfiguration()); var container = new ObjectContainer(); runtimePluginEvents.RaiseCustomizeTestThreadDependencies(container); var traceListener = container.Resolve <ITraceListener>(); traceListener.Should().BeOfType(typeof(CustomTraceListener)); }
public void Should_be_able_to_register_dependencies_from_a_plugin() { var pluginWithCustomDependency = new PluginWithCustomDependency(); var runtimePluginEvents = new RuntimePluginEvents(); pluginWithCustomDependency.Initialize(runtimePluginEvents, new RuntimePluginParameters(), new UnitTestProviderConfiguration()); var container = new ObjectContainer(); runtimePluginEvents.RaiseRegisterGlobalDependencies(container); var customDependency = container.Resolve <ICustomDependency>(); customDependency.Should().BeOfType(typeof(CustomDependency)); }
protected virtual void LoadPlugin( string pluginPath, IRuntimePluginLoader pluginLoader, RuntimePluginEvents runtimePluginEvents, UnitTestProviderConfiguration unitTestProviderConfigration, ITraceListener traceListener, bool traceMissingPluginAttribute) { traceListener.WriteToolOutput($"Loading plugin {pluginPath}"); var plugin = pluginLoader.LoadPlugin(pluginPath, traceListener, traceMissingPluginAttribute); var runtimePluginParameters = new RuntimePluginParameters(); plugin?.Initialize(runtimePluginEvents, runtimePluginParameters, unitTestProviderConfigration); }
public void Should_be_able_to_register_scenario_dependencies_from_a_plugin() { StringConfigProvider configurationHolder = GetConfigWithPlugin(); var pluginWithCustomScenarioDependencies = new PluginWithCustomScenarioDependencies(oc => oc.RegisterTypeAs <CustomDependency, ICustomDependency>()); var runtimePluginEvents = new RuntimePluginEvents(); pluginWithCustomScenarioDependencies.Initialize(runtimePluginEvents, new RuntimePluginParameters(), new UnitTestProviderConfiguration()); var container = new ObjectContainer(); runtimePluginEvents.RaiseCustomizeScenarioDependencies(container); var customDependency = container.Resolve <ICustomDependency>(); customDependency.Should().BeOfType(typeof(CustomDependency)); }
public void Test_runner_dependencies_from_a_plugin_are_not_in_the_global_container() { StringConfigProvider configurationHolder = GetConfigWithPlugin(); var pluginWithCustomTestThreadDependencies = new PluginWithCustomTestThreadDependencies(oc => oc.RegisterTypeAs <CustomDependency, ICustomDependency>()); var runtimePluginEvents = new RuntimePluginEvents(); pluginWithCustomTestThreadDependencies.Initialize(runtimePluginEvents, new RuntimePluginParameters(), new UnitTestProviderConfiguration()); var container = new ObjectContainer(); runtimePluginEvents.RaiseRegisterGlobalDependencies(container); Action resolveAction = () => container.Resolve <ICustomDependency>(); resolveAction.Should().Throw <ObjectContainerException>(); }
public void Initialize(RuntimePluginEvents runtimePluginEvents, RuntimePluginParameters runtimePluginParameters) { runtimePluginEvents.CustomizeGlobalDependencies += (sender, args) => { args.ObjectContainer.RegisterTypeAs <UnityBindingInstanceResolver, ITestObjectResolver>(); args.ObjectContainer.RegisterTypeAs <ContainerFinder, IContainerFinder>(); }; runtimePluginEvents.CustomizeScenarioDependencies += (sender, args) => { args.ObjectContainer.RegisterFactoryAs <IUnityContainer>(() => { var containerBuilderFinder = args.ObjectContainer.Resolve <IContainerFinder>(); var containerBuilder = containerBuilderFinder.GetCreateScenarioContainer(); var container = containerBuilder.Invoke(); return(container); }); }; }
public void Should_be_able_to_register_further_dependencies_based_on_the_configuration() { var pluginWithCustomTestRunnerFactoryWhenStopAtFirstErrorIsTrue = new PluginWithTraceListenerWhenStopAtFirstErrorIsTrue(); var runtimePluginEvents = new RuntimePluginEvents(); pluginWithCustomTestRunnerFactoryWhenStopAtFirstErrorIsTrue.Initialize(runtimePluginEvents, new RuntimePluginParameters(), new UnitTestProviderConfiguration()); var container = new ObjectContainer(); var specFlowConfiguration = ConfigurationLoader.GetDefault(); runtimePluginEvents.RaiseCustomizeGlobalDependencies(container, specFlowConfiguration); container.RegisterTypeAs <NullListener, ITraceListener>(); specFlowConfiguration.StopAtFirstError = true; runtimePluginEvents.RaiseCustomizeGlobalDependencies(container, specFlowConfiguration); var customTestRunnerFactory = container.Resolve <ITraceListener>(); customTestRunnerFactory.Should().BeOfType <DefaultListener>(); }
public void Initialize(RuntimePluginEvents runtimePluginEvents, RuntimePluginParameters runtimePluginParameters) { runtimePluginEvents.CustomizeGlobalDependencies += (sender, args) => { args.ObjectContainer.RegisterTypeAs <AutofacBindingInstanceResolver, IBindingInstanceResolver>(); args.ObjectContainer.RegisterTypeAs <ContainerBuilderFinder, IContainerBuilderFinder>(); }; runtimePluginEvents.CustomizeScenarioDependencies += (sender, args) => { args.ObjectContainer.RegisterFactoryAs <IComponentContext>(() => { var containerBuilderFinder = args.ObjectContainer.Resolve <IContainerBuilderFinder>(); var createScenarioContainerBuilder = containerBuilderFinder.GetCreateScenarioContainerBuilder(); var containerBuilder = createScenarioContainerBuilder(); var container = containerBuilder.Build(); return(container.BeginLifetimeScope()); }); }; }