private ScenarioContext CreateScenarioContext(Action <IObjectContainer> registerTestThreadMocks = null, Action <IObjectContainer> registerGlobalMocks = null) { IObjectContainer testThreadContainer; testRunner = TestObjectFactories.CreateTestRunner(out testThreadContainer, registerTestThreadMocks, registerGlobalMocks); return(new ScenarioContext(new ObjectContainer(testThreadContainer), new ScenarioInfo("sample scenario", "sample scenario description", new string[0]), testThreadContainer.Resolve <ITestObjectResolver>())); }
public void ShouldReportCorrectCurrentTopLevelStepIfWeHaveStepsMoreThan1Deep() { IObjectContainer container; var mockTracer = new Mock <ITestTracer>(); TestObjectFactories.CreateTestRunner(out container, objectContainer => objectContainer.RegisterInstanceAs(mockTracer.Object)); var contextManager = container.Resolve <IContextManager>(); var firstStepInfo = new StepInfo(StepDefinitionType.Given, "I have called initialise once", null, string.Empty); contextManager.InitializeStepContext(firstStepInfo); Assert.AreEqual(firstStepInfo, contextManager.CurrentTopLevelStep.StepInfo); contextManager.CleanupStepContext(); var secondStepInfo = new StepInfo(StepDefinitionType.When, "I have called initialise twice", null, string.Empty); contextManager.InitializeStepContext(secondStepInfo); Assert.AreEqual(secondStepInfo, contextManager.CurrentTopLevelStep.StepInfo); var thirdStepInfo = new StepInfo(StepDefinitionType.When, "I have called initialise a third time", null, string.Empty); contextManager.InitializeStepContext(thirdStepInfo); //Call sub step Assert.AreEqual(secondStepInfo, contextManager.CurrentTopLevelStep.StepInfo); var fourthStepInfo = new StepInfo(StepDefinitionType.When, "I have called initialise a forth time", null, string.Empty); contextManager.InitializeStepContext(fourthStepInfo); //call sub step of sub step contextManager.CleanupStepContext(); // return from sub step of sub step Assert.AreEqual(secondStepInfo, contextManager.CurrentTopLevelStep.StepInfo); contextManager.CleanupStepContext(); // return from sub step Assert.AreEqual(secondStepInfo, contextManager.CurrentTopLevelStep.StepInfo); contextManager.CleanupStepContext(); // finish 2nd step Assert.AreEqual(secondStepInfo, contextManager.CurrentTopLevelStep.StepInfo); var fifthStepInfo = new StepInfo(StepDefinitionType.When, "I have called initialise a fifth time", null, string.Empty); contextManager.InitializeStepContext(fifthStepInfo); Assert.AreEqual(fifthStepInfo, contextManager.CurrentTopLevelStep.StepInfo); }
private ScenarioContext CreateScenarioContext(Action <IObjectContainer> registerMocks = null) { IObjectContainer container; testRunner = TestObjectFactories.CreateTestRunner(out container, registerMocks); return(new ScenarioContext(new ScenarioInfo("sample scenario", new string[0]), container)); }
/// <summary> /// Creates a test thread object container and registers the provided test tracer. /// </summary> /// <param name="testTracer">The test tracer that will be registered.</param> /// <returns>An object that implements <see cref="IObjectContainer"/>.</returns> private IObjectContainer CreateTestThreadObjectContainer(ITestTracer testTracer) { IObjectContainer container; TestObjectFactories.CreateTestRunner( out container, objectContainer => objectContainer.RegisterInstanceAs <ITestTracer>(testTracer)); return(container); }
public void TopLevelStepShouldBeNullInitially() { IObjectContainer container; var mockTracer = new Mock <ITestTracer>(); TestObjectFactories.CreateTestRunner(out container, objectContainer => objectContainer.RegisterInstanceAs(mockTracer.Object)); var contextManager = container.Resolve <IContextManager>(); Assert.IsNull(contextManager.CurrentTopLevelStepDefinitionType); }
public void ShouldTraceWarningWhenCleanedUpWithoutBeingInitialised() { IObjectContainer container; var mockTracer = new Mock <ITestTracer>(); TestObjectFactories.CreateTestRunner(out container, objectContainer => objectContainer.RegisterInstanceAs(mockTracer.Object)); var contextManager = container.Resolve <IContextManager>(); contextManager.CleanupStepContext(); mockTracer.Verify(x => x.TraceWarning("The previous ScenarioStepContext was already disposed.")); }
public void ShouldNotTraceWarningWhenInitialisedTwice() { IObjectContainer container; var mockTracer = new Mock <ITestTracer>(); TestObjectFactories.CreateTestRunner(out container, objectContainer => objectContainer.RegisterInstanceAs(mockTracer.Object)); var contextManager = container.Resolve <IContextManager>(); contextManager.InitializeStepContext(new StepInfo(StepDefinitionType.Given, "I have called initialise once", null, string.Empty)); contextManager.InitializeStepContext(new StepInfo(StepDefinitionType.Given, "I have called initialise twice", null, string.Empty)); mockTracer.Verify(x => x.TraceWarning(It.IsAny <String>()), Times.Never()); }
public void ShouldBeAbleToDisposeContextManagerAfterAnInconsistentState() { IObjectContainer container; var mockTracer = new Mock <ITestTracer>(); TestObjectFactories.CreateTestRunner(out container, objectContainer => objectContainer.RegisterInstanceAs(mockTracer.Object)); var contextManager = container.Resolve <IContextManager>(); var firstStepInfo = new StepInfo(StepDefinitionType.Given, "I have called initialise once", null, string.Empty); contextManager.InitializeStepContext(firstStepInfo); contextManager.CleanupStepContext(); ((IDisposable)contextManager).Dispose(); }
public void ShouldTraceWarningWhenInitialisedTwiceThenCleanedUp3Times() { IObjectContainer container; var mockTracer = new Mock <ITestTracer>(); TestObjectFactories.CreateTestRunner(out container, objectContainer => objectContainer.RegisterInstanceAs(mockTracer.Object)); var contextManager = container.Resolve <IContextManager>(); contextManager.InitializeStepContext(new StepInfo(StepDefinitionType.Given, "I have called initialise once", null, string.Empty)); contextManager.InitializeStepContext(new StepInfo(StepDefinitionType.Given, "I have called initialise twice", null, string.Empty)); contextManager.CleanupStepContext(); contextManager.CleanupStepContext(); contextManager.CleanupStepContext(); mockTracer.Verify(x => x.TraceWarning("The previous ScenarioStepContext was already disposed."), Times.Once()); }
public void ScenarioStartShouldResetTopLevelStep() { IObjectContainer container; var mockTracer = new Mock <ITestTracer>(); TestObjectFactories.CreateTestRunner(out container, objectContainer => objectContainer.RegisterInstanceAs(mockTracer.Object)); var contextManager = container.Resolve <IContextManager>(); var firstStepInfo = new StepInfo(StepDefinitionType.Given, "I have called initialise once", null, string.Empty); contextManager.InitializeStepContext(firstStepInfo); // do not call CleanupStepContext to simulate inconsistent state contextManager.InitializeScenarioContext(new ScenarioInfo("my scenario")); Assert.IsNull(contextManager.CurrentTopLevelStepDefinitionType); }
protected TestRunner GetTestRunnerFor(Action <IObjectContainer> registerMocks, params Type[] bindingTypes) { return(TestObjectFactories.CreateTestRunner( container => { container.RegisterTypeAs <DummyTestTracer, ITestTracer>(); container.RegisterInstanceAs(ContextManagerStub); var builder = (RuntimeBindingRegistryBuilder)container.Resolve <IRuntimeBindingRegistryBuilder>(); foreach (var bindingType in bindingTypes) { builder.BuildBindingsFromType(bindingType); } registerMocks?.Invoke(container); })); }
public void ShouldReportCorrectCurrentTopLevelStepIfWeHaveExecutedMoreThan1Step() { IObjectContainer container; var mockTracer = new Mock <ITestTracer>(); TestObjectFactories.CreateTestRunner(out container, objectContainer => objectContainer.RegisterInstanceAs(mockTracer.Object)); var contextManager = container.Resolve <IContextManager>(); var firstStepInfo = new StepInfo(StepDefinitionType.Given, "I have called initialise once", null, string.Empty); contextManager.InitializeStepContext(firstStepInfo); Assert.AreEqual(firstStepInfo, contextManager.CurrentTopLevelStep.StepInfo); contextManager.CleanupStepContext(); var secondStepInfo = new StepInfo(StepDefinitionType.When, "I have called initialise twice", null, string.Empty); contextManager.InitializeStepContext(secondStepInfo); Assert.AreEqual(secondStepInfo, contextManager.CurrentTopLevelStep.StepInfo); contextManager.CleanupStepContext(); Assert.AreEqual(secondStepInfo, contextManager.CurrentTopLevelStep.StepInfo); }