2013-06-07 12 views
9

Nie można zdefiniować haka [BeforeFeature]/[AfterFeature] dla pliku funkcji. Testowana aplikacja to samodzielne aplikacje desktopowe WPF.Funkcja BeforeFeature/AfterFeature nie działa przy użyciu interfejsu SpecFlow i kodowanego interfejsu użytkownika

Jeśli używam [BeforeScenario]/[AfterScenario] wszystko działa poprawnie, aplikacja uruchamia się bez problemu, zaprojektowane kroki są wykonywane poprawnie, a aplikacja jest zamknięta.

Gdy używam te same czynności z [BeforeFeature]/[AfterFeature] tagi po uruchomieniu aplikacji i test nie powiedzie się z:

następujący błąd wystąpił, gdy proces ten został rozpoczęty: Odwołanie do obiektu nie zostało ustawione na wystąpienie obiektu.

Oto przykład:

[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 były rejestrowane i automatycznie generowane z Coded UI testowym Builder:

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%\\..." 
} 

uwagę zasługuje: Jestem całkiem nowy z SpecFlow. Nie mogę ustalić, dlaczego mój test kończy się niepowodzeniem z [BeforeFeature] i działa dobrze z [BeforeScenario].

Byłoby wspaniale, gdyby ktoś mógł mi pomóc w tym problemie. Dzięki!

+0

Czy możesz również zamieścić ślad stosu wyjątku proszę? Który wiersz zawiera błąd/czy jest to kod zewnętrzny/jaki jest ostatni wiersz kodu do uruchomienia? – perfectionist

Odpowiedz

14

Ostatnio wpadłem na podobny problem. Nie jestem pewien, czy to ci pomoże, ale może być przydatne dla osób, które natkną się na to pytanie.

Aby funkcja BeforeFeature \ AfterFeature działała, sama funkcja musi być oznaczona, oznaczanie tylko określonych scenariuszy nie będzie działać.

Pliki funkcja powinna zacząć tak:

@setup_feature 
Feature: Name Of Your Feature 

@setup_scenario 
Scenario: ... 
Powiązane problemy