2016-02-16 17 views
5

Ich habe eine Aufgabe für die Arbeit, die ich nicht ausführen kann, weil ich das Toolset nicht vollständig zur Hand habe. Ich sollte JBehave zusammen mit Selenium Web Driver verwenden, um ein bestimmtes Buch auf einer Wunschliste in einem Amazon-Account hinzufügen zu können. Ich habe eine bestimmte Geschichte und ich sollte die zuvor erwähnten Werkzeuge für "Lernzwecke" verwenden. Ich verstehe, dass JBehave ein Framework für BDD ist. Also, ich habe eine Geschichte, die ich testen möchte. Was mich jedoch verwirrt, ist die Konfiguration und "Schrittdefinition", die ich nicht wirklich verstehe. Mein Problem ist, dass ich nicht wirklich verstehe, wie man all diese Teile zusammenbringt. Wo passt Selenium WebDriver in die Gleichung? Beachten Sie, dass ich Selenium mit Java verwendet habe und das war ein Kinderspiel.Wie funktioniert JBehave mit Java?

Ich möchte Ihnen ein Beispiel für eine Geschichte im Gurkenformat geben, und ich würde mich über Einsichten zu diesem Thema freuen, vielleicht eine Klarstellung darüber, wie alle Teile zusammenpassen.

Given user <username> with password <password> has a valid amazon.com account 
And has a wish list 
And wants to purchase book <title> at a later date 
When a request to place the book in the wish list is made 
Then the book is placed in the wish list 
And the book <title> appears in the wish list when <username> logs in at a later date. 
+0

haben Sie einen Blick auf Link Frage, könnte man eine Vorstellung bekommen, wie die JBehave Selen Java zu konfigurieren, [link] (http: // Stackoverflow .com/questions/20733703/very-simple-step-by-step-jbehave-setup-tutorial) – SacTan

+0

Kannst du mehr erklären, was das Ziel dieser "Lernaufgabe" ist? Willst du nichts anderes, als diese eine konkrete Geschichte mit java + webdriver + jbehave zu implementieren, um sie auf deinem Computer auszuführen und die Ergebnisse zu untersuchen?Oder möchten Sie lieber wissen, ob diese Tools auf lange Sicht nützlich sein können, um Hunderte von Storys zu testen und wie Sie das Projekt und das gesamte Testframework mithilfe dieser Tools organisieren können, um einfach und effizient eine Vielzahl von Tools zu implementieren und auszuführen Tests, zeigen ihre Ergebnisse und untersuchen eine Fehlerursache? – krokodilko

+0

Wow, es gibt eine Explosion aus der Vergangenheit. JBehave ist uralt, die letzte Veröffentlichung war im Jahr 2006. Ich würde persönlich nach etwas suchen, das ein wenig aktueller und gut unterstützt ist. Sie werden Probleme haben, wenn etwas schief geht, weil niemand es wirklich mehr benutzt. – Ardesco

Antwort

2

Jetzt haben Sie Ihre Geschichte Sie benötigen, um Ihre Schritte. Die Schritte sind der Java-Code, der von der Story ausgeführt wird. Jede Zeile in Ihrer Geschichte wird einem Java-Schritt zugeordnet. Siehe die Dokumentation unter Candidate Steps.

Hier ist ein wirklich einfache Stich wie Ihre Geschichte und Schritte aussehen könnten. Aber es sollte dir zumindest eine Vorstellung davon geben, wie die Geschichten und Schritte zusammenhängen.

Geschichte

Given user username with password passcode is on product page url 
When the user clicks add to wish list 
Then the wish list page is displayed 
And the product title appears on the wish list 

Schritte

public class WishlistSteps { 
    WebDriver driver = null; 

    @BeforeScenario 
    public void scenarioSetup() { 
    driver = new FirefoxDriver; 
    } 

    @Given("user $username with password $passcode is on product page $url") 
    public void loadProduct(String username, String passcode, String url) { 
    doUserLogin(driver, username, passcode); // defined elsewhere 
    driver.get(url); 
    } 

    @When("the user clicks add to wishlist") 
    public void addToWishlist() { 
    driver.findElement(By.class("addToWishlist")).click(); 
    } 

    @Then("the wish list page is displayed") 
    public void isWishlistPage() { 
    assertTrue("Wishlist page", driver.getCurrentUrl().matches(".*/gp/registry/wishlist.*")); 
    } 

    @Then("the product $title appears on the wish list") 
    public void checkProduct(String title) { 
    // check product entries 
    // assert if product not found 
    } 

    @AfterScenario 
    public void afterScenario() { 
    driver.quit(); 
    } 
} 

Als nächstes benötigen Sie einen Läufer, der läuft tatsächlich findet und die Geschichten. Siehe die Dokumentation unter Running Stories. Unten ist ein sehr einfacher Läufer, der als JUnit Test laufen würde.

Runner

public class JBehaveRunner extends JUnitStories { 
    public JBehaveRunner() { 
    super(); 
    } 

    @Override 
    public injectableStepsFactory stepsFactory() { 
    return new InstanceStepsFactory(configuration(), 
     new WishlistSteps()); 
    } 

    @Override 
    protected List<String> storyPaths() { 
    return Arrays.asList("stories/Wishlist.story"); 
    } 
} 

würde Dieser Läufer dann als JUnit-Test durchgeführt werden. Sie können Ihre IDE für die Ausführung konfigurieren oder Maven oder Gradle verwenden (abhängig von Ihrer Konfiguration).

mvn test 

Ich habe festgestellt, dass die folgenden Seiten einen guten Überblick über das gesamte Setup geben. Und die Beispiele aus dem JBhave-Repository sind ebenfalls nützlich.

+0

Danke, aber das ist genau die gleiche Erklärung, die ich überall sehe. Mein Problem ist nach dem Erstellen all dieser, wie kann ich sie tatsächlich ausführen? Ich kann mir nicht vorstellen, wie man ein Szenario als solches tatsächlich durchführt. Wie vergleiche ich meine Ergebnisse? Ich kann hier nicht das ganze Bild sehen. Beachten Sie, dass ich die Laufgeschichten auf JBehave gelesen habe, aber sie überspringen zu viele Erklärungen, die wichtig sind, um das volle Bild zu erhalten. – Ralph

+0

Ok, Sie suchen nach einigen Beispielen oder einer einfachen Zusammenfassung, die alles miteinander verbindet. Ich poste etwas, das dabei helfen könnte. –

+0

Siehe meine aktualisierte Antwort. Hoffentlich wird das für Sie hilfreicher sein. –