gpt4 book ai didi

java - Jbehave 无法找到多个故事

转载 作者:行者123 更新时间:2023-11-30 02:01:29 28 4
gpt4 key购买 nike

我在 eclipse 中使用 maven 有一个 Jbehave 和 selenium 项目。最初我是为一个故事做的,但现在我写了两个故事,我希望这两个故事在测试中运行。但只有一个故事文件通过程序。我如何找到资源文件夹中的所有故事文件?

这是我到目前为止的代码谷歌.java

public class Google extends JUnitStory {
@Override
public Configuration configuration(){
return new MostUsefulConfiguration().useStoryLoader(
new LoadFromClasspath(this.getClass()))
.useStoryReporterBuilder(
new StoryReporterBuilder().withCodeLocation(
CodeLocations.codeLocationFromClass(this
.getClass())).withFormats(
Format.CONSOLE, Format.TXT, Format.HTML, Format.STATS))
;
}

@Override
public List<CandidateSteps> candidateSteps(){
return new InstanceStepsFactory(configuration(),
new GoogleStep()) //can put in a comma separated list of Step implementers here
.createCandidateSteps();
}
protected List<String> storyPaths(){
return new StoryFinder().findPaths(
CodeLocations.codeLocationFromClass(this.getClass()),
"*.story", "");

GoogleStep.java

public class GoogleStep {

private WebDriver driver;
private FluentWait<WebDriver> fWait;

public GoogleStep() {
System.setProperty("webdriver.gecko.driver","C:\\Program Files\\GeckoDriver\\geckodriver.exe");
File pathToBinary = new File("C:\\Program Files\\Mozilla Firefox\\firefox.exe");

FirefoxBinary ffBinary = new FirefoxBinary(pathToBinary);

FirefoxOptions options = new FirefoxOptions();
options.setCapability("moz:firefoxOptions", options.setBinary(ffBinary));
WebDriver driver2 = new FirefoxDriver(options);
driver = driver2;

fWait = new FluentWait<WebDriver>(driver).pollingEvery(500,
TimeUnit.MILLISECONDS).withTimeout(10, TimeUnit.SECONDS);

}

//Google Mapping

@Given("I navigate to google.lk")
public void navigateToGoogle(){
driver.get("https://www.google.lk/");
fWait.until(ExpectedConditions.visibilityOfElementLocated(By.id("lst-ib")));
}

@When("I perform a google search for $query")
public void performASearchForGoogleQuery(String query){
driver.findElement(By.id("lst-ib")).sendKeys(query);
}

@Then("I click google Search Button")
public void clickSearchGoogleButton() {
driver.findElement(By.xpath("//input[@value='Google Search']")).click();
}

@Then("A google link $text exists in the results")
public void linkContainingTextExistsInTheGoogleResults(String resultText){
driver.getPageSource().contains(resultText);
}

//yahoo mapping

@Given("I navigate to yahoo.com")
public void navigateToYahoo(){
driver.get("https://www.yahoo.com/");
fWait.until(ExpectedConditions.visibilityOfElementLocated(By.id("uh-search-box")));
}

@When("I perform a yahoo search for $query")
public void performASearchForYahooQuery(String query){
driver.findElement(By.id("uh-search-box")).sendKeys(query);
}

@Then("I click yahoo Search Button")
public void clickSearchYahooButton() {
driver.findElement(By.xpath("//*[@id='uh-search-button']")).click();
}

@Then("A yahoo link $text exists in the results")
public void linkContainingTextExistsInTheYahooResults(String resultText){
driver.getPageSource().contains(resultText);
}

我有两个故事文件,分别命名为 google.story 和 yahoo.story

我的文件夹结构如下

enter image description here

我在这里做错了什么或者我必须做什么?任何帮助都会非常有帮助。

最佳答案

我是这样做的:

@Override
protected List<String> storyPaths() {

URL searchLoc = CodeLocations.codeLocationFromClass(this.getClass());

return new StoryFinder().findPaths(searchLoc, Arrays.asList("**/google.story",
"**/yahoo.story",
""),
Arrays.asList("**/excluded*.story"));

}

第一个数组列表中的额外元素可能不是必需的,但我将其包含在内,因为我最初从中获取信息的示例就是这样做的,但我可以通过这种方式添加多个故事,只需为每个新故事添加更多元素故事,如果我只想运行一个故事,我可以在每个我不想运行的故事之前加上注释双斜杠(//),即

    return new StoryFinder().findPaths(searchLoc, Arrays.asList("**/google.story",
//"**/yahoo.story",
""),
Arrays.asList("**/excluded*.story"));

只会运行 google.story。

关于java - Jbehave 无法找到多个故事,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52718255/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com