/// <summary> /// Initializes a new instance of the <see cref="BeforeTestActionCommand"/> class. /// </summary> /// <param name="innerCommand">The inner command.</param> /// <param name="action">The TestActionItem to run before the inner command.</param> public BeforeTestActionCommand(TestCommand innerCommand, TestActionItem action) : base(innerCommand) { Guard.ArgumentValid(innerCommand.Test is TestSuite, "TestActionBeforeCommand may only apply to a TestSuite", "innerCommand"); Guard.ArgumentNotNull(action, nameof(action)); BeforeTest = (context) => { action.BeforeTest(Test); }; }
/// <summary> /// Initializes a new instance of the <see cref="AfterTestActionCommand"/> class. /// </summary> /// <param name="innerCommand">The inner command.</param> /// <param name="action">The TestActionItem to run before the inner command.</param> public AfterTestActionCommand(TestCommand innerCommand, TestActionItem action) : base(innerCommand) { Guard.ArgumentValid(innerCommand.Test is TestSuite, "BeforeTestActionCommand may only apply to a TestSuite", nameof(innerCommand)); Guard.ArgumentNotNull(action, nameof(action)); AfterTest = (context) => { if (action.BeforeTestWasRun) { action.AfterTest(Test); } }; }
/// <summary> /// Initializes a new instance of the <see cref="AfterTestActionCommand"/> class. /// </summary> /// <param name="innerCommand">The inner command.</param> /// <param name="action">The TestActionItem to run before the inner command.</param> public AfterTestActionCommand(TestCommand innerCommand, TestActionItem action) : base(innerCommand) { Guard.ArgumentValid(innerCommand.Test is TestSuite, "BeforeTestActionCommand may only apply to a TestSuite", nameof(innerCommand)); Guard.ArgumentNotNull(action, nameof(action)); AfterTest = (context) => { if (action.BeforeTestWasRun) { var oldCount = context.CurrentResult.AssertionResults.Count; action.AfterTest(Test); // If there are new assertion results here, they are warnings issued // in teardown. Redo test completion so they are listed properly. if (context.CurrentResult.AssertionResults.Count > oldCount) { context.CurrentResult.RecordTestCompletion(); } } ; }; }