我有一项工作任务似乎无法完成,因为我没有完全掌握工具集。我应该使用JBehave和Selenium Web Driver来将某本书添加到亚马逊帐户的心愿单上。我有一个给定的故事,我应该使用前面提到的工具用于“学习目的”。我知道JBehave是BDD的框架。所以,我有一些我想测试的故事。然而,令我困惑的是配置和“步骤定义”部分,我并没有真正得到。我的问题是我真的不明白如何让所有这些部分一起工作。 Selenium WebDriver在哪个方面适合?请注意,我已经使用Selenium和Java,这是轻而易举的事。
我想以gherkin格式给你一个故事的例子我会很感激有关这个主题的任何见解,也许是对所有部分如何融合在一起的澄清。
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 :(得分:3)
现在您已经拥有了故事,您需要步骤。这些步骤是由故事执行的Java代码。故事中的每一行都映射到Java Step。请参阅Candidate Steps上的文档。
这是一个真的简单的抨击您的故事和步骤可能是什么样子。但它至少应该让你了解故事和步骤如何结合在一起。
<强>故事强>
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
<强>步骤强>
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();
}
}
接下来,您将需要一个实际查找并运行故事的跑步者。请参阅Running Stories上的文档。下面是一个非常简单的跑步者,它将作为JUnit测试运行。
<强>转轮强>
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");
}
}
然后,此跑步者将作为JUnit测试执行。您可以将IDE配置为运行它,或使用Maven或Gradle(取决于您的设置)。
mvn test
我发现下面的页面提供了整个设置的精彩概述。 JBhave存储库中的示例也很有用。