BeforeScenario和AfterScenario挂钩在specflow中不起作用

问题描述 投票:0回答:1

我的SeleniumSteps.cs代码中包含以下代码我正在尝试使AfterScenario在调试这些测试时启动

using PrivateDomain;
using Machine.Specifications;
using NUnit.Framework;
using OpenQA.Selenium;
using OpenQA.Selenium.Support.UI;
using System;
using System.Collections.Generic;
using System.Drawing.Imaging;
using System.IO;
using System.Linq;
using TechTalk.SpecFlow;

namespace Functional.Steps
{
    public class SeleniumSteps : PrivateDomain.Steps.SeleniumSteps
    {
        #region Hooks
        [BeforeScenario]
        public void Before()
        {
            // before 
        }

        [AfterTestRun, Scope(Tag = null)]
        public new static void AfterTestRun()
        {
            // after testrun
        }

        [AfterScenario]
        public void AfterScenarioErrorScreenshot()
        {
            // after scenario
        }

        #endregion
    }
}





using OpenQA.Selenium;
using TechTalk.SpecFlow;

namespace PrivateDomain.Steps
{
    [Binding]
    [Scope(Tag = "Selenium")]
    public class SeleniumSteps
    {
        protected static IWebDriver webDriver;

        public SeleniumSteps();

        public virtual IWebDriver WebDriver { get; }

        [AfterTestRun]
        [Scope(Tag = null)]
        public static void AfterTestRun();

        [AfterScenarioAttribute(new[] { })]
        public virtual void AfterScenario();

    }
}

当我调试测试时,我可以看到调试器触及AfterTestRun部分。但是,BeforeScenarioAfterScenario均未执行。

有人可以告诉我我在做什么错吗?

selenium specflow
1个回答
0
投票

如果钩子方法在具有[Binding]属性的类内,则应执行它们。您检查了一些输出或日志,是否有任何信息?

尝试下一个:

  1. 关闭Visual Studio
  2. 导航到%TEMP%文件夹
  3. 删除specflow缓存文件
  4. 启动Visual Studio
  5. 尝试通过调试器现在发生的事情

有时规格流陷入困境,并且无法将功能部件文件中的步骤与.cs文件中的实现绑定在一起。然后,我使用这种解决方案使一切正常。

此外,请查看:https://github.com/techtalk/SpecFlow/issues/1741

此主题处理的是放置在基类中的Hook,这些Hook在以后用于继承。

最新问题
© www.soinside.com 2019 - 2024. All rights reserved.