@@ -39,37 +39,85 @@ public void Initialize(RuntimePluginEvents runtimePluginEvents, RuntimePluginPar
3939 var serviceCollectionFinder = args . ObjectContainer . Resolve < IServiceCollectionFinder > ( ) ;
4040 var createScenarioServiceCollection = serviceCollectionFinder . GetCreateScenarioServiceCollection ( ) ;
4141 var services = createScenarioServiceCollection ( ) ;
42- RegisterSpecFlowDependencies ( args . ObjectContainer , services ) ;
42+
43+ RegisterObjectContainer ( args . ObjectContainer , services ) ;
44+ RegisterScenarioSpecFlowDependencies ( services ) ;
45+ RegisterFeatureSpecFlowDependencies ( services ) ;
46+ RegisterTestThreadSpecFlowDependencies ( services ) ;
47+
48+ return services . BuildServiceProvider ( ) ;
49+ } ) ;
50+ } ;
51+
52+ runtimePluginEvents . CustomizeFeatureDependencies += ( sender , args ) =>
53+ {
54+ args . ObjectContainer . RegisterFactoryAs < IServiceProvider > ( ( ) =>
55+ {
56+ var serviceCollectionFinder = args . ObjectContainer . Resolve < IServiceCollectionFinder > ( ) ;
57+ var createScenarioServiceCollection = serviceCollectionFinder . GetCreateScenarioServiceCollection ( ) ;
58+ var services = createScenarioServiceCollection ( ) ;
59+
60+ RegisterObjectContainer ( args . ObjectContainer , services ) ;
61+ RegisterFeatureSpecFlowDependencies ( services ) ;
62+ RegisterTestThreadSpecFlowDependencies ( services ) ;
63+
64+ return services . BuildServiceProvider ( ) ;
65+ } ) ;
66+ } ;
67+
68+ runtimePluginEvents . CustomizeTestThreadDependencies += ( sender , args ) =>
69+ {
70+ args . ObjectContainer . RegisterFactoryAs < IServiceProvider > ( ( ) =>
71+ {
72+ var serviceCollectionFinder = args . ObjectContainer . Resolve < IServiceCollectionFinder > ( ) ;
73+ var createScenarioServiceCollection = serviceCollectionFinder . GetCreateScenarioServiceCollection ( ) ;
74+ var services = createScenarioServiceCollection ( ) ;
75+
76+ RegisterObjectContainer ( args . ObjectContainer , services ) ;
77+ RegisterTestThreadSpecFlowDependencies ( services ) ;
78+
4379 return services . BuildServiceProvider ( ) ;
4480 } ) ;
4581 } ;
4682 }
4783
48- private void RegisterSpecFlowDependencies (
84+ private static void RegisterObjectContainer (
4985 IObjectContainer objectContainer ,
5086 IServiceCollection services )
5187 {
52- services . AddTransient < IObjectContainer > ( ctx =>
53- {
54- return objectContainer ;
55- } ) ;
88+ services . AddTransient < IObjectContainer > ( ctx => objectContainer ) ;
89+ }
90+
91+ private static void RegisterScenarioSpecFlowDependencies (
92+ IServiceCollection services )
93+ {
5694 services . AddTransient < ScenarioContext > ( ctx =>
5795 {
5896 var specflowContainer = ctx . GetService < IObjectContainer > ( ) ;
5997 var scenarioContext = specflowContainer . Resolve < ScenarioContext > ( ) ;
6098 return scenarioContext ;
6199 } ) ;
100+ }
101+
102+ private static void RegisterFeatureSpecFlowDependencies (
103+ IServiceCollection services )
104+ {
62105 services . AddTransient < FeatureContext > ( ctx =>
63106 {
64107 var specflowContainer = ctx . GetService < IObjectContainer > ( ) ;
65- var scenarioContext = specflowContainer . Resolve < FeatureContext > ( ) ;
66- return scenarioContext ;
108+ var featureContext = specflowContainer . Resolve < FeatureContext > ( ) ;
109+ return featureContext ;
67110 } ) ;
111+ }
112+
113+ private static void RegisterTestThreadSpecFlowDependencies (
114+ IServiceCollection services )
115+ {
68116 services . AddTransient < TestThreadContext > ( ctx =>
69117 {
70118 var specflowContainer = ctx . GetService < IObjectContainer > ( ) ;
71- var scenarioContext = specflowContainer . Resolve < TestThreadContext > ( ) ;
72- return scenarioContext ;
119+ var testThreadContext = specflowContainer . Resolve < TestThreadContext > ( ) ;
120+ return testThreadContext ;
73121 } ) ;
74122 }
75123 }
0 commit comments