Я не могу найти более одной истории - PullRequest
0 голосов
/ 09 октября 2018

У меня есть проект Jbehave и selenium в Eclipse, использующий Maven. Первоначально я делал это для одной истории, но теперь я написал две истории и хочу, чтобы в тестах запускались две истории. Но только один файл истории находитсяКак я могу найти все файлы истории в ресурсах папки?

Вот мой код Google.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

Что я здесь делаю неправильно или что я должен делать? Любая помощь будет очень полезна.

Ответы [ 2 ]

0 голосов
/ 10 октября 2018

Выяснил, что я делал неправильно. Я расширял класс из класса JUnitStory.JunitStory не позволяет вам переопределить storyPath method.but для запуска нескольких историй мне нужно расширить его из JUnitStories и переопределить метод Storypath.Решил мою проблему. Спасибо снова за ваш ответ.

0 голосов
/ 09 октября 2018

Вот как я это делаю:

@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.

...