Hello,

I am trying to get a variation of the jbehave 3 example in the introductory 
tutorial working.  The code is below and is fairly simple.

http://jbehave.org/reference/stable/getting-started.html

I am getting the following junit runtime
error when I try to run the program. Thanks for any advice on debugging this 
problem:

java.lang.NoClassDefFoundError: org/openqa/selenium/Capabilities
at 
org.jbehave.web.selenium.SeleniumConfiguration.defaultSelenium(SeleniumConfiguration.java:43)
at org.jbehave.web.selenium.SeleniumSteps.<init>(SeleniumSteps.java:18)

My programs look like this:

package test.scenarios.gettingStarted;

import java.util.List;

import org.jbehave.core.configuration.Configuration;
import org.jbehave.core.configuration.MostUsefulConfiguration;
import org.jbehave.core.io.LoadFromClasspath;
import org.jbehave.core.junit.JUnitStory;
import org.jbehave.core.reporters.StoryReporterBuilder;
import org.jbehave.core.reporters.StoryReporterBuilder.Format;
import org.jbehave.core.steps.CandidateSteps;
import org.jbehave.core.steps.InstanceStepsFactory;
import org.openqa.selenium.*;

public class Test extends JUnitStory {

    // Here we specify the configuration, starting from default
    // MostUsefulConfiguration, and changing only what is needed
    @Override
    public Configuration configuration() {
        return new MostUsefulConfiguration()
        // where to find the stories
                .useStoryLoader(
                        new LoadFromClasspath(this.getClass().getClassLoader()))
                // CONSOLE and TXT reporting
                .useStoryReporterBuilder(
                        new StoryReporterBuilder().withDefaultFormats()
                                .withFormats(Format.CONSOLE, Format.TXT));
    }

    // Here we specify the steps classes
    @Override
    public List<CandidateSteps> candidateSteps() {
        // varargs, can have more that one steps classes
        return new InstanceStepsFactory(configuration(), new TestSteps())
                .createCandidateSteps();
    }
}

=====================

package test.scenarios.gettingStarted;

import org.jbehave.core.annotations.Alias;
import org.jbehave.core.annotations.Aliases;
import org.jbehave.core.annotations.Given;
import org.jbehave.core.annotations.Named;
import org.jbehave.core.annotations.Then;
import org.jbehave.core.annotations.When;

import com.thoughtworks.selenium.Selenium;
import com.thoughtworks.selenium.condition.Condition;
import com.thoughtworks.selenium.condition.ConditionRunner.Context;

public class TestSteps extends org.jbehave.web.selenium.SeleniumSteps {

   
    String url = null;
    String contextRoot = "/test";

    public TestSteps(Selenium selenium) {
        super(selenium);
    }

    public TestSteps() {
        // TODO Auto-generated constructor stub
    }

   

    @When("I type \"<text>\" into <field>")
    @Aliases(values = { "I type \"$text\" into $field" })
    public void type(@Named("text") String text, @Named("field") String field) {
        if (field.contains(".")) {
            field = String.format("xpath=//inp...@id='%s']", field);
        }
        selenium.type(field, text);
    }

    
    @Then("I should see \"<message>\"")
    @Alias("I should see \"$message\"")
    public void shouldSee(@Named("message") String message) {
        url = selenium.getLocation();
        // System.out.println(" should see url = " + url);
    }

  
    @Given("I am not logged in")
    public void nobodyLoggedIn() {
        selenium.start();
        selenium.open("http://localhost:8080/test/test.html";);
        selenium.waitForPageToLoad(timeout);
       ;
    };
    
   

}

test.story is just a normal junit test:

Given I am not logged in
When I log in as .......
Then I should see .......
........


                                          

Reply via email to