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());
                });
            };
        }
Beispiel #2
0
 /// <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)
        {
            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());
                });
            };
        }
Beispiel #4
0
 public void Initialize(RuntimePluginEvents runtimePluginEvents, RuntimePluginParameters runtimePluginParameters, UnitTestProviderConfiguration unitTestProviderConfiguration)
 {
     runtimePluginEvents.RegisterGlobalDependencies += (sender, args) =>
     {
         args.ObjectContainer.RegisterTypeAs <CustomBindingFactory, IBindingFactory>();
     };
 }
Beispiel #5
0
 public void Initialize(
     RuntimePluginEvents runtimePluginEvents,
     RuntimePluginParameters runtimePluginParameters,
     UnitTestProviderConfiguration unitTestProviderConfiguration)
 {
     runtimePluginEvents.CustomizeScenarioDependencies += (sender, args) => RegisterRuntimeDependencies(args.ObjectContainer);
 }
 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.CustomizeTestThreadDependencies += (sender, args) =>
     {
         args.ObjectContainer.RegisterTypeAs <TestRunner, ITestRunner>();
     };
 }
Beispiel #8
0
 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);
                });
            };
        }
Beispiel #10
0
 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>();
 }
Beispiel #11
0
        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>();
        }
Beispiel #12
0
 public void Initialize(RuntimePluginEvents runtimePluginEvents, RuntimePluginParameters runtimePluginParameters,
                        UnitTestProviderConfiguration unitTestProviderConfiguration)
 {
     runtimePluginEvents.CustomizeTestThreadDependencies += (sender, e) =>
     {
         e.ObjectContainer.RegisterTypeAs <OctaneGherkinReportAddIn, ITestTracer>();
     };
 }
Beispiel #13
0
 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, 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;
        }
        protected virtual void LoadPlugin(PluginDescriptor pluginDescriptor, IRuntimePluginLoader pluginLoader, RuntimePluginEvents runtimePluginEvents)
        {
            var plugin = pluginLoader.LoadPlugin(pluginDescriptor);
            var runtimePluginParameters = new RuntimePluginParameters
            {
                Parameters = pluginDescriptor.Parameters
            };

            plugin.Initialize(runtimePluginEvents, runtimePluginParameters);
        }
Beispiel #16
0
 public void Initialize(RuntimePluginEvents runtimePluginEvents, RuntimePluginParameters runtimePluginParameters)
 {
     runtimePluginEvents.CustomizeGlobalDependencies += (sender, args) =>
     {
         if (args.SpecFlowConfiguration.StopAtFirstError)
         {
             args.ObjectContainer.RegisterTypeAs <CustomTestRunnerFactory, ITestRunnerFactory>();
         }
     };
 }
Beispiel #17
0
 public void Initialize(RuntimePluginEvents runtimePluginEvents, RuntimePluginParameters runtimePluginParameters, UnitTestProviderConfiguration unitTestProviderConfiguration)
 {
     runtimePluginEvents.CustomizeGlobalDependencies += (sender, args) =>
     {
         if (args.SpecFlowConfiguration.StopAtFirstError)
         {
             args.ObjectContainer.RegisterTypeAs <DefaultListener, ITraceListener>();
         }
     };
 }
Beispiel #18
0
        protected virtual void LoadPlugin(string pluginPath, IRuntimePluginLoader pluginLoader, RuntimePluginEvents runtimePluginEvents,
                                          UnitTestProviderConfiguration unitTestProviderConfigration, ITraceListener traceListener)
        {
            traceListener.WriteToolOutput($"Loading plugin {pluginPath}");

            var plugin = pluginLoader.LoadPlugin(pluginPath, traceListener);
            var runtimePluginParameters = new RuntimePluginParameters();

            plugin?.Initialize(runtimePluginEvents, runtimePluginParameters, unitTestProviderConfigration);
        }
Beispiel #19
0
 public void Initialize(RuntimePluginEvents runtimePluginEvents, RuntimePluginParameters runtimePluginParameters)
 {
     if (Configuration.ReportPortal.Enabled)
     {
         runtimePluginEvents.CustomizeGlobalDependencies += (sender, e) =>
         {
             e.ObjectContainer.RegisterTypeAs <SafeBindingInvoker, IBindingInvoker>();
         };
     }
 }
        /// <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>();
        }
Beispiel #21
0
        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 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);
                });
            };
        }
Beispiel #23
0
        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());
                });
            };
        }
Beispiel #24
0
        public void Initialize(RuntimePluginEvents runtimePluginEvents, RuntimePluginParameters runtimePluginParameters, UnitTestProviderConfiguration unitTestProviderConfiguration)
        {
            runtimePluginEvents.CustomizeGlobalDependencies += (sender, args) =>
            {
                // temporary fix for CustomizeGlobalDependencies called multiple times
                // see https://github.com/techtalk/SpecFlow/issues/948
                if (!args.ObjectContainer.IsRegistered <IContainerFinder>())
                {
                    // an extra lock to ensure that there are not two super fast threads re-registering the same stuff
                    lock (_registrationLock)
                    {
                        if (!args.ObjectContainer.IsRegistered <IContainerFinder>())
                        {
                            args.ObjectContainer.RegisterTypeAs <WindsorTestObjectResolver, ITestObjectResolver>();
                            args.ObjectContainer.RegisterTypeAs <ContainerFinder, IContainerFinder>();
                        }
                    }

                    // workaround for parallel execution issue - this should be rather a feature in BoDi?
                    args.ObjectContainer.Resolve <IContainerFinder>();
                }
            };

            runtimePluginEvents.CustomizeScenarioDependencies += (sender, args) =>
            {
                args.ObjectContainer.RegisterFactoryAs(() =>
                {
                    var finder           = args.ObjectContainer.Resolve <IContainerFinder>();
                    var containerBuilder = finder.GetCreateScenarioContainer();

                    var container = containerBuilder();
                    var scope     = container.BeginScope();

                    RegisterSpecflowDependecies(args.ObjectContainer, container);

                    args.ObjectContainer.RegisterInstanceAs(new WindsorScenarioScope(scope), dispose: true);

                    return(container);
                });
            };
        }
        public void Initialize(RuntimePluginEvents runtimePluginEvents, RuntimePluginParameters runtimePluginParameters)
        {
            runtimePluginEvents.CustomizeGlobalDependencies += (sender, args) =>
            {
                args.ObjectContainer.RegisterTypeAs <ArgumentInjectionBindingInstanceResolver, IBindingInstanceResolver>();
                args.ObjectContainer.RegisterTypeAs <ArgumentInjectionBindingInvoker, IBindingInvoker>();
                additionalAssemblies = args.RuntimeConfiguration.AdditionalStepAssemblies;
            };



            runtimePluginEvents.CustomizeScenarioDependencies += (sender, args) =>
            {
                var assemblies      = args.ObjectContainer.Resolve <IBindingRegistry>().GetStepDefinitions().Select(m => m.Method).OfType <RuntimeBindingMethod>().Select(t => t.MethodInfo.DeclaringType.Assembly).Distinct();
                var primaryAssembly = assemblies.Where(a => !additionalAssemblies.Contains(a.FullName)).First();

                adapter = primaryAssembly.GetTypes().Where(t => typeof(IDependencyInjectionAdapter).IsAssignableFrom(t)).SingleOrDefault();

                if (adapter == null)
                {
                    adapter = primaryAssembly.GetCustomAttributes(true).OfType <DependencyAdapterAttribute>().FirstOrDefault()?.Type;
                }

                if (adapter == null)
                {
                    adapter = assemblies.SelectMany(a => a.GetTypes()).Where(t => typeof(IDependencyInjectionAdapter).IsAssignableFrom(t)).Single();
                }

                args.ObjectContainer.RegisterFactoryAs(() =>
                {
                    var a = (IDependencyInjectionAdapter)Activator.CreateInstance(adapter);
                    a.Initialize();
                    return(a);
                });
            };
        }
        public void Initialize(RuntimePluginEvents runtimePluginEvents, RuntimePluginParameters runtimePluginParameters, UnitTestProviderConfiguration unitTestProviderConfiguration)
        {
            var currentDirectory = Path.GetDirectoryName(new Uri(typeof(Plugin).Assembly.CodeBase).LocalPath);

            _traceLogger = TraceLogManager.Instance.WithBaseDir(currentDirectory).GetLogger <Plugin>();

            Config = new ConfigurationBuilder().AddDefaults(currentDirectory).Build();

            var isEnabled = Config.GetValue("Enabled", true);

            if (isEnabled)
            {
                runtimePluginEvents.CustomizeGlobalDependencies += (sender, e) =>
                {
                    e.SpecFlowConfiguration.AdditionalStepAssemblies.Add("ReportPortal.SpecFlowPlugin");
                    e.ObjectContainer.RegisterTypeAs <SafeBindingInvoker, IBindingInvoker>();
                };

                runtimePluginEvents.CustomizeScenarioDependencies += (sender, e) =>
                {
                    e.ObjectContainer.RegisterTypeAs <SkippedStepsHandler, ISkippedStepHandler>();
                };
            }
        }
Beispiel #27
0
 public void Initialize(RuntimePluginEvents runtimePluginEvents, RuntimePluginParameters runtimePluginParameters, UnitTestProviderConfiguration unitTestProviderConfiguration)
 {
     runtimePluginEvents.CustomizeTestThreadDependencies += (sender, args) => { _specificTestRunnerDependencies(args.ObjectContainer); };
 }
Beispiel #28
0
 public void Initialize(RuntimePluginEvents runtimePluginEvents, RuntimePluginParameters runtimePluginParameters, UnitTestProviderConfiguration unitTestProviderConfiguration)
 {
     runtimePluginEvents.ConfigurationDefaults += (sender, args) => { specifyDefaults(args.SpecFlowConfiguration); };
 }
Beispiel #29
0
 public void Initialize(RuntimePluginEvents runtimePluginEvents, RuntimePluginParameters runtimePluginParameters)
 {
     runtimePluginEvents.CustomizeScenarioDependencies += (sender, args) => { _specificScenarioDependencies(args.ObjectContainer); };
 }
Beispiel #30
0
 public void Initialize(RuntimePluginEvents runtimePluginEvents, RuntimePluginParameters runtimePluginParameters)
 {
     runtimePluginEvents.RegisterGlobalDependencies += (sender, args) => args.ObjectContainer.RegisterTypeAs <CustomDependency, ICustomDependency>();
 }