Ich möchte die folgende Testschrittklassenstruktur haben:
%Vor%"Es gibt einen Kunden" ist ein häufiger Schritt, der sowohl in FeatureOne als auch in FeatureTwo verwendet wird, aber in den beiden Funktionen wird eine unterschiedliche Verarbeitungslogik verwendet. Daher entscheide ich mich, diese Schrittdefinition in eine Basisklasse zu setzen und die geschützten Methoden jeweils in zwei abgeleiteten Klassen zu überschreiben.
Wenn ich jedoch die Tests durchgeführt habe, habe ich folgenden Fehler:
%Vor%Kann mir jemand sagen, wie ich dieses Problem beheben kann?
Ich habe das jetzt selbst herausgefunden, also ein paar Notizen (hoffentlich kann jemand das in Zukunft benutzen):
Die Antwort ist einfach; Verwenden Sie keine Vererbung, um Ihre Bindungen zu definieren.
Zur Laufzeit findet SpecFlow seine Aufrufmethoden, indem global nach allen öffentlichen Klassen gesucht wird, die nach Methoden mit übereinstimmenden [Given]
-Attributen suchen. Das bedeutet, dass Sie nicht zwei verschiedene Implementierungen für dieselbe Given there is a customer
-Anweisung haben können. Wenn Sie darüber nachdenken, ist dies eine ziemlich sinnvolle Design-Entscheidung, die die Mehrdeutigkeit reduzieren wird.
Tags und Links c# inheritance acceptance-testing specflow ambiguous