Ich versuche derzeit, Spring in meine Gurken-Tests zu integrieren. Ich habe eine benutzerdefinierte SpringFactory wie folgt:
aber der Code wird nicht aufgerufen. Was ist der beste Weg, um die Fabrik mit meinen Tests zu verbinden?
[Klärung von Kommentar zu gelöschter Antwort: Das Hauptproblem ist, dass mein Test Gurke als Hauptläufer hat, d. h. @RunWith (Cucumber.class), daher kann der SpringJUnit4ClassRunner hier nicht verwendet werden. Dies wird im obigen Link beschrieben, aber es gibt keine Beschreibung, wie gucura.xml gelesen wird. Ich habe eine neue SpringFactory hinzugefügt, aber es liest nicht die XML-Datei ....]
Update: Eigentlich habe ich ein bisschen weiter mit dem Hinzufügen von:
%Vor%Allerdings habe ich @Autowired-Variablen, die nicht injiziert werden, da der Test von Cucumber ausgeführt wird.
Hat jemand anderes dieses Problem?
Eine schnelle Google-Suche nach "Gurke Frühjahr Integration" bringt mich hier und hier . Wenn Sie cuke4duke
verwenden, sieht das viel einfacher aus.
Das Beispiel scheint anzuzeigen, dass cuke4duke
standardmäßig cucumber.xml
von der Basis Ihres Klassenpfads lädt. Dies ist eine Spring-Konfigurationsdatei, die ein component-scan
für mit @StepDefinition
annotierte Klassen enthalten muss.
Sie müssen keine SpringFactory
angeben, Sie müssen nicht die Annotation @RunWith
verwenden, sondern nur eine Spring-Konfiguration und eine oder mehrere jvm-Eigenschaften bereitstellen.
Update: Das Projekt cuke4duke ist jetzt veraltet und wurde durch Cucumber-JVM ersetzt.
Ich hatte auch das gleiche Problem und die Ursache war, dass gucura.xml nicht von der SpringFactory in gurke-spring-1.1.5.jar gelesen wurde. Der Spring DI-Test ist fehlgeschlagen, was zu NPEs geführt hat.
Seit der Einreichung 448 lädt die Cucumber SpringFactory die Datei gurke.xml nicht mehr und Sie müssen @ContextConfiguration("classpath*:cucumber.xml")
hinzufügen. in ALLEN Ihren Step-Definition-Klassen.
Das Problem ist, dass bestimmte Versionen von Spring nur mit bestimmten Versionen von Cucumber-Spring und Cucumber-JVM funktionieren. Das Finden der Gewinnkombination kann zwei Tage dauern, in denen man mit den Jar-Versionen spielt. Beginnen Sie also mit einem "Hello World" BDD-Szenario, das eine einfache Injektion verwendet, von der Sie wissen, dass sie funktionieren wird, da Sie diese Jars optimieren müssen, bis Sie eine funktionierende Umgebung erhalten.
Der einfachste Weg ist, die neueste Version von Spring mit der neuesten Version von Cucumber-Spring abzugleichen. Die neuen Versionen von Spring werden besser unterstützt. Wenn Sie Ihren Frühling nicht einfach aktualisieren können, dann verwenden Sie Websites, die Maven-Abhängigkeiten zwischen verschiedenen Versionen von Cucumber-Spring und der Spring-Version, mit der Sie arbeiten, beschreiben.
Wenn Sie bei Ihrer Legacy-Version von Spring bleiben wollen (schlechte Idee, der Schmerz der Veränderung wird nur noch schlimmer werden), ist eine andere Strategie, JBehave für BDD-Tests zu verwenden.