コード例 #1
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;
 }
コード例 #2
0
 public void Initialize(
     GeneratorPluginEvents generatorPluginEvents,
     GeneratorPluginParameters generatorPluginParameters,
     UnitTestProviderConfiguration unitTestProviderConfiguration)
 {
     generatorPluginEvents.CustomizeDependencies += (sender, args) => CustomizeGeneratorDependencies(args.ObjectContainer);
 }
コード例 #3
0
 public void Initialize(
     RuntimePluginEvents runtimePluginEvents,
     RuntimePluginParameters runtimePluginParameters,
     UnitTestProviderConfiguration unitTestProviderConfiguration)
 {
     runtimePluginEvents.CustomizeScenarioDependencies += (sender, args) => RegisterRuntimeDependencies(args.ObjectContainer);
 }
コード例 #4
0
        public void Initialize(GeneratorPluginEvents generatorPluginEvents, GeneratorPluginParameters generatorPluginParameters,
                               UnitTestProviderConfiguration unitTestProviderConfiguration)
        {
            unitTestProviderConfiguration.UseUnitTestProvider(MasterGeneratorProvider.Name);

            generatorPluginEvents.RegisterDependencies += CustomizeDependencies;
        }
コード例 #5
0
 public void Initialize(RuntimePluginEvents runtimePluginEvents, RuntimePluginParameters runtimePluginParameters,
                        UnitTestProviderConfiguration unitTestProviderConfiguration)
 {
     runtimePluginEvents.CustomizeTestThreadDependencies += (sender, e) =>
     {
         e.ObjectContainer.RegisterTypeAs <OctaneGherkinReportAddIn, ITestTracer>();
     };
 }
コード例 #6
0
ファイル: DSLPlugin.cs プロジェクト: wenyuansong/Specflow.DSL
 public void Initialize(RuntimePluginEvents runtimePluginEvents, RuntimePluginParameters runtimePluginParameters,
                        UnitTestProviderConfiguration unitTestProviderConfiguration)
 {
     runtimePluginEvents.CustomizeTestThreadDependencies += (sender, args) =>
     {
         args.ObjectContainer.RegisterTypeAs <DSLTestRunner, ITestRunner>();
         args.ObjectContainer.RegisterTypeAs <ParameterTransform, IParameterTransform>();
     };
 }
コード例 #7
0
        public void Initialize(RuntimePluginEvents runtimePluginEvents, RuntimePluginParameters runtimePluginParameters,
                               UnitTestProviderConfiguration unitTestProviderConfiguration)
        {
            runtimePluginEvents.CustomizeGlobalDependencies += (sender, args) =>
                                                               args.ObjectContainer.RegisterTypeAs <AllureBindingInvoker, IBindingInvoker>();

            runtimePluginEvents.CustomizeTestThreadDependencies += (sender, args) =>
                                                                   args.ObjectContainer.RegisterTypeAs <AllureTestTracerWrapper, ITestTracer>();
        }
コード例 #8
0
        public void Initialize(RuntimePluginEvents runtimePluginEvents, RuntimePluginParameters runtimePluginParameters,
                               UnitTestProviderConfiguration unitTestProviderConfiguration)
        {
            ReporterManager.Initialize(TestingFramework.SpecFlow, new GhprSpecFlowTestDataProvider());
            var specFlowHelper = new GhprSpecFlowHelper();

            GhprPluginHelper.Init(specFlowHelper);
            runtimePluginEvents.CustomizeTestThreadDependencies += CustomizeTestThreadDependencies;
        }
コード例 #9
0
 public void Initialize(GeneratorPluginEvents generatorPluginEvents, GeneratorPluginParameters generatorPluginParameters,
                        UnitTestProviderConfiguration unitTestProviderConfiguration)
 {
     generatorPluginEvents.RegisterDependencies += (sender, args) =>
     {
         args.ObjectContainer.RegisterTypeAs <ExternalDataTestGenerator, ITestGenerator>();
         args.ObjectContainer.RegisterTypeAs <ExternalDataFeaturePatcher, IExternalDataFeaturePatcher>();
         args.ObjectContainer.RegisterTypeAs <TestDataProvider, ITestDataProvider>();
     };
 }
コード例 #10
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);
        }
コード例 #11
0
        private static void LoadPlugin(PluginDescriptor pluginDescriptor, IGeneratorPluginLoader pluginLoader, GeneratorPluginEvents generatorPluginEvents,
                                       UnitTestProviderConfiguration unitTestProviderConfigration)
        {
            var plugin = pluginLoader.LoadPlugin(pluginDescriptor);
            var generatorPluginParameters = new GeneratorPluginParameters
            {
                Parameters = pluginDescriptor.Parameters
            };

            plugin.Initialize(generatorPluginEvents, generatorPluginParameters, unitTestProviderConfigration);
        }
コード例 #12
0
 public void Initialize(
     GeneratorPluginEvents generatorPluginEvents,
     GeneratorPluginParameters generatorPluginParameters,
     UnitTestProviderConfiguration unitTestProviderConfiguration)
 {
     generatorPluginEvents.RegisterDependencies += (sender, args) =>
     {
         args.ObjectContainer.RegisterTypeAs <SharedBackgroundFeatureGeneratorProvider, IFeatureGeneratorProvider>();
         args.ObjectContainer.RegisterTypeAs <SharedBackgroundFeatureGenerator, IFeatureGenerator>();
     };
 }
コード例 #13
0
        public void Initialize(GeneratorPluginEvents generatorPluginEvents, GeneratorPluginParameters generatorPluginParameters,
                               UnitTestProviderConfiguration unitTestProviderConfiguration)
        {
            generatorPluginEvents.RegisterDependencies += (sender, args) =>
            {
                args.ObjectContainer.RegisterTypeAs <ExternalDataTestGenerator, ITestGenerator>();

                args.ObjectContainer.RegisterTypeAs <SpecificationProvider, ISpecificationProvider>();
                args.ObjectContainer.RegisterTypeAs <DataSourceLoaderFactory, IDataSourceLoaderFactory>();
                args.ObjectContainer.RegisterTypeAs <CsvLoader, IDataSourceLoader>("CSV");
                args.ObjectContainer.RegisterTypeAs <ExcelLoader, IDataSourceLoader>("Excel");
            };
        }
コード例 #14
0
        private void LoadPlugins(
            ObjectContainer container,
            GeneratorPluginEvents generatorPluginEvents,
            UnitTestProviderConfiguration unitTestProviderConfiguration,
            IEnumerable <string> generatorPlugins)
        {
            // initialize plugins that were registered from code
            foreach (var generatorPlugin in container.Resolve <IDictionary <string, IGeneratorPlugin> >().Values)
            {
                // these plugins cannot have parameters
                generatorPlugin.Initialize(generatorPluginEvents, new GeneratorPluginParameters(), unitTestProviderConfiguration);
            }

            var pluginLoader = container.Resolve <IGeneratorPluginLoader>();

            foreach (string generatorPlugin in generatorPlugins)
            {
                //todo: should set the parameters, and do not pass empty
                var pluginDescriptor = new PluginDescriptor(Path.GetFileNameWithoutExtension(generatorPlugin), generatorPlugin, PluginType.Generator, string.Empty);
                LoadPlugin(pluginDescriptor, pluginLoader, generatorPluginEvents, unitTestProviderConfiguration);
            }
        }
コード例 #15
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 <IContainerBuilderFinder>())
                {
                    // an extra lock to ensure that there are not two super fast threads re-registering the same stuff
                    lock (_registrationLock)
                    {
                        if (!args.ObjectContainer.IsRegistered <IContainerBuilderFinder>())
                        {
                            args.ObjectContainer
                            .RegisterTypeAs <SimpleInjectorTestObjectResolver, 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(() =>
                {
                    var containerBuilderFinder         = args.ObjectContainer.Resolve <IContainerBuilderFinder>();
                    var createScenarioContainerBuilder = containerBuilderFinder.GetCreateScenarioContainerBuilder();
                    var container = createScenarioContainerBuilder();
                    RegisterSpecFlowDependencies(args.ObjectContainer, container);
                    container.Verify();
                    return(container);
                });
            };
        }
        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());
                });
            };
        }
コード例 #17
0
 public AnalyticsEventProvider(IUserUniqueIdStore userUniqueIdStore, UnitTestProviderConfiguration unitTestProviderConfiguration)
 {
     _userUniqueIdStore = userUniqueIdStore;
     _unitTestProvider  = unitTestProviderConfiguration.UnitTestProvider;
 }
コード例 #18
0
 public void Initialize(GeneratorPluginEvents generatorPluginEvents, GeneratorPluginParameters generatorPluginParameters, UnitTestProviderConfiguration unitTestProviderConfiguration)
 {
     generatorPluginEvents.ConfigurationDefaults += (sender, args) => { specifyDefaults(args.SpecFlowProjectConfiguration); };
 }
コード例 #19
0
        protected virtual void LoadPlugins(IRuntimeConfigurationProvider configurationProvider, ObjectContainer container, RuntimePluginEvents runtimePluginEvents,
                                           SpecFlowConfiguration specFlowConfiguration, UnitTestProviderConfiguration unitTestProviderConfigration, Assembly testAssembly)
        {
            // initialize plugins that were registered from code
            foreach (var runtimePlugin in container.Resolve <IDictionary <string, IRuntimePlugin> >().Values)
            {
                // these plugins cannot have parameters
                runtimePlugin.Initialize(runtimePluginEvents, new RuntimePluginParameters(), unitTestProviderConfigration);
            }

            // load & initalize parameters from configuration
            var pluginLocator    = container.Resolve <IRuntimePluginLocator>();
            var pluginLoader     = container.Resolve <IRuntimePluginLoader>();
            var traceListener    = container.Resolve <ITraceListener>();
            var assemblyLocation = testAssembly != null && !testAssembly.IsDynamic ? testAssembly.Location : null;

            foreach (var pluginPath in pluginLocator.GetAllRuntimePlugins(Path.GetDirectoryName(assemblyLocation)))
            {
                LoadPlugin(pluginPath, pluginLoader, runtimePluginEvents, unitTestProviderConfigration, traceListener);
            }
        }
コード例 #20
0
 public void Initialize(GeneratorPluginEvents generatorPluginEvents, GeneratorPluginParameters generatorPluginParameters, UnitTestProviderConfiguration unitTestProviderConfiguration)
 {
     generatorPluginEvents.RegisterDependencies += (sender, args) => args.ObjectContainer.RegisterTypeAs <CustomDependency, ICustomDependency>();
 }
コード例 #21
0
 public void Initialize(GeneratorPluginEvents generatorPluginEvents, GeneratorPluginParameters generatorPluginParameters, UnitTestProviderConfiguration unitTestProviderConfiguration)
 {
     generatorPluginEvents.CustomizeDependencies += (sender, args) =>
     {
         if (args.SpecFlowProjectConfiguration.SpecFlowConfiguration.StopAtFirstError)
         {
             args.ObjectContainer.RegisterTypeAs <CustomHeaderWriter, ITestHeaderWriter>();
         }
     };
 }
コード例 #22
0
 public AnalyticsEventProvider(IUserUniqueIdStore userUniqueIdStore, UnitTestProviderConfiguration unitTestProviderConfiguration, IEnvironmentWrapper environmentWrapper)
 {
     _userUniqueIdStore  = userUniqueIdStore;
     _environmentWrapper = environmentWrapper;
     _unitTestProvider   = unitTestProviderConfiguration.UnitTestProvider;
 }
 public void Initialize(GeneratorPluginEvents generatorPluginEvents, GeneratorPluginParameters generatorPluginParameters,
                        UnitTestProviderConfiguration unitTestProviderConfiguration)
 {
     generatorPluginEvents.CustomizeDependencies += CustomizeDependencies;
 }
コード例 #24
0
 public void Initialize(RuntimePluginEvents runtimePluginEvents, RuntimePluginParameters runtimePluginParameters, UnitTestProviderConfiguration unitTestProviderConfiguration)
 {
     runtimePluginEvents.RegisterGlobalDependencies    += RuntimePluginEventsOnRegisterGlobalDependencies;
     runtimePluginEvents.CustomizeGlobalDependencies   += RuntimePluginEvents_CustomizeGlobalDependencies;
     runtimePluginEvents.CustomizeScenarioDependencies += RuntimePluginEvents_CustomizeScenarioDependencies;
     unitTestProviderConfiguration.UseUnitTestProvider("nunit");
 }
コード例 #25
0
 public void Initialize(RuntimePluginEvents runtimePluginEvents, RuntimePluginParameters runtimePluginParameters, UnitTestProviderConfiguration unitTestProviderConfiguration)
 {
     runtimePluginEvents.RegisterGlobalDependencies += (sender, args) => args.ObjectContainer.RegisterTypeAs <CustomDependency, ICustomDependency>();
 }
コード例 #26
0
 public void Initialize(RuntimePluginEvents runtimePluginEvents, RuntimePluginParameters runtimePluginParameters, UnitTestProviderConfiguration unitTestProviderConfiguration)
 {
     runtimePluginEvents.ConfigurationDefaults += (sender, args) => { specifyDefaults(args.SpecFlowConfiguration); };
 }
コード例 #27
0
 public void Initialize(RuntimePluginEvents runtimePluginEvents, RuntimePluginParameters runtimePluginParameters, UnitTestProviderConfiguration unitTestProviderConfiguration)
 {
     runtimePluginEvents.CustomizeGlobalDependencies += (sender, args) =>
     {
         if (args.SpecFlowConfiguration.StopAtFirstError)
         {
             args.ObjectContainer.RegisterTypeAs <DefaultListener, ITraceListener>();
         }
     };
 }
コード例 #28
0
 public void Initialize(GeneratorPluginEvents generatorPluginEvents, GeneratorPluginParameters generatorPluginParameters, UnitTestProviderConfiguration unitTestProviderConfiguration)
 {
     unitTestProviderConfiguration.UseUnitTestProvider("nunit");
 }
コード例 #29
0
 public void Initialize(RuntimePluginEvents runtimePluginEvents, RuntimePluginParameters runtimePluginParameters, UnitTestProviderConfiguration unitTestProviderConfiguration)
 {
     runtimePluginEvents.CustomizeTestThreadDependencies += (sender, args) => { _specificTestRunnerDependencies(args.ObjectContainer); };
 }
コード例 #30
0
        protected virtual void LoadPlugins(IRuntimeConfigurationProvider configurationProvider, ObjectContainer container, RuntimePluginEvents runtimePluginEvents,
                                           SpecFlowConfiguration specFlowConfiguration, UnitTestProviderConfiguration unitTestProviderConfigration, Assembly testAssembly)
        {
            // initialize plugins that were registered from code
            foreach (var runtimePlugin in container.Resolve <IDictionary <string, IRuntimePlugin> >().Values)
            {
                // these plugins cannot have parameters
                runtimePlugin.Initialize(runtimePluginEvents, new RuntimePluginParameters(), unitTestProviderConfigration);
            }

            // load & initalize parameters from configuration
            var pluginLocator = container.Resolve <IRuntimePluginLocator>();
            var pluginLoader  = container.Resolve <IRuntimePluginLoader>();
            var traceListener = container.Resolve <ITraceListener>();

            foreach (var pluginPath in pluginLocator.GetAllRuntimePlugins())
            {
                // Should not log error if TestAssembly does not have a RuntimePlugin attribute
                var traceMissingPluginAttribute = !testAssembly.Location.Equals(pluginPath);
                LoadPlugin(pluginPath, pluginLoader, runtimePluginEvents, unitTestProviderConfigration, traceListener, traceMissingPluginAttribute);
            }
        }