我无法为我的功能文件定义[BeforeFeature]/[AfterFeature] Hook 。被测试的应用程序是WPF独立桌面应用程序。

如果我使用[BeforeScenario]/[AfterScenario]一切正常,则应用程序启动没有任何问题,设计步骤已正确执行,并且该应用程序已关闭。

一旦对[BeforeFeature]/[AfterFeature]标签使用了相同的步骤,应用程序将启动,并且测试失败并显示以下内容:

启动此过程时发生以下错误:对象引用未设置为对象的实例。

这是一个例子:

[Binding]
public class Setup
{
    [BeforeScenario("setup_scenario")]
    public static void BeforeAppScenario()
    {
        UILoader.General.StartApplication();
    }

    [AfterScenario("setup_scenario")]
    public static void AfterAppScenario()
    {
        UILoader.General.CloseApplication();
    }

    [BeforeFeature("setup_feature")]
    public static void BeforeAppFeature()
    {
        UILoader.General.StartApplication();
    }

    [AfterFeature("setup_feature")]
    public static void AfterAppFeature()
    {
        UILoader.General.CloseApplication();
    }
}

记录StartApplication/CloseApplication并使用“编码的UI测试生成器”自动生成:

public void StartApplication()
{
    // Launch '%ProgramFiles%\...
    ApplicationUnderTest Application = ApplicationUnderTest.Launch(this.StartApplicationParams.ExePath, this.StartApplicationParams.AlternateExePath);
}

public class StartApplicationParams
{
    public string ExePath = "C:\\Program Files..."
    public string AlternateExePath = "%ProgramFiles%\\..."
}

值得注意的是:我对SpecFlow很陌生。
我无法弄清楚为什么我的测试因[BeforeFeature]失败而与[BeforeScenario]一起正常工作。

如果有人可以帮助我解决这个问题,那就太好了。谢谢!

最佳答案

我最近遇到了类似的问题。不知道这是否仍然可以为您提供帮助,但是对于那些偶然发现此问题的人来说可能有用。

为了使BeforeFeature\AfterFeature起作用,需要对功能本身进行标记,仅对特定场景进行标记将不起作用。

您的功能文件应以这样的方式开始:

@setup_feature
Feature: Name Of Your Feature

@setup_scenario
Scenario: ...

10-07 20:32