Невозможно запустить историю JBehave - PullRequest
4 голосов
/ 02 июня 2011

Может ли кто-нибудь помочь мне написать историю о JBehave?У меня есть проект Maven в Eclipse.

История:

Meta:
@author Nikolay Vasilev
@bdd-talk: BG JUG

Scenario:  Validating BMI calculator

Given a body mass index calculator
When a doctor populates health record of a patient with mass 90 kg and 175 cm tall
Then patient's body mass index is 23

Он хранится в src/test/resources/stories, что отражено в pom.xml:

<build>
    <testResources>
        <testResource>
            <directory>src/test/resources/stories</directory>
        </testResource>
    </testResources>
    ...

Класс шагов:

public class MetricBMICalculatorSteps {
    private HealthRecord healthRecord;
    private MetricBMICalculator bmiCalculator;
    private BodyMassIndex bmi;

    @Given("a body mass index calculator")
    public void initBMICalculator() {
        bmiCalculator = new MetricBMICalculator();
    }

    @When("a doctor populates health record of a patient with mass $weight kg and $height cm tall")
    public void populateHealthRecord(@Named("weight") float weight, @Named("height") float height) {
        healthRecord = new ISUHealthRecord();
        healthRecord.setWeight(weight);
        healthRecord.setHeight(height);
        bmi = bmiCalculator.calculate(healthRecord);
    }

    @Then("Then patient's body mass index is $bmi")
    public void checkBmi(@Named("bmi") double bmiValue) {
        Assert.assertEquals(bmiValue, bmi.value());
    }
}

Мой Embedder:

public class MyEmbedder extends Embedder {

    // --- Constants -----------------------------------------------------------

    private Configuration configuration;

    // --- Constructors --------------------------------------------------------

    public MyEmbedder() {
        configuration = loadConfiguration();
    }

    // --- Methods -------------------------------------------------------------

    @Override
    public Configuration configuration() {
        return configuration;
    }

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

    // --- Methods (Auxiliary) -------------------------------------------------

    private Configuration loadConfiguration() {
        Configuration configuration = new MostUsefulConfiguration();
        configuration.useStoryLoader(loadStoryLoader());
        configuration.useStoryReporterBuilder(loadStoryReporterBuilder());
        configuration.useStepMonitor(new SilentStepMonitor());

        return configuration;
    }

    // where to find the stories
    private StoryLoader loadStoryLoader() {
        return new LoadFromRelativeFile(
                CodeLocations.codeLocationFromClass(this.getClass()));
    }

    private StoryReporterBuilder loadStoryReporterBuilder() {
        // CONSOLE and TXT reporting
        StoryReporterBuilder storyReporterBuilder = new StoryReporterBuilder();
        storyReporterBuilder.withDefaultFormats();
        storyReporterBuilder.withFormats(Format.CONSOLE, Format.TXT);
        return storyReporterBuilder;
    }

    public void runStory(String story) {
        if (story != null && story.endsWith(".story")) {
            this.runStoriesAsPaths(Arrays.asList(story));
        } else {
            throw new RuntimeException("Problem locating .story file:" + story);
        }
    }
}

Когда я пытаюсь запустить его с:

String storyRelativePath = "health/steps/MetricBMICalculator.story";
MyEmbedder eclipseEmbedder = new MyEmbedder(storyRelativePath);
eclipseEmbedder.runStory(storyRelativePath);

itМне кажется, что файл шагов не выполняется вообще (по крайней мере, во время отладки выполнение не останавливается на точках останова в классе шагов, который я поставил).Вот результат выполнения:

Processing system properties {}

(BeforeStories)
Using 1 threads
Running story health/steps/MetricBMICalculator.story

(AfterStories)
Generating reports view to 'D:\workspace\bg-jug-bdd\jug-bdd-jbehave-maven\target\jbehave'

using formats `[stats, console, txt]`

and view properties
{defaultFormats=stats, decorateNonHtml=true, viewDirectory=view, decorated=ftl/jbehave-report-decorated.ftl, reports=ftl/jbehave-reports-with-totals.ftl, maps=ftl/jbehave-maps.ftl, navigator=ftl/jbehave-navigator.ftl, views=ftl/jbehave-views.ftl, nonDecorated=ftl/jbehave-report-non-decorated.ftl}
Reports view generated with 2 stories (of which 0 pending)  containing 0 scenarios (of which 0 failed and 0 pending)

Кто-нибудь знает, что я должен сделать, чтобы запустить эту историю?

1 Ответ

3 голосов
/ 26 декабря 2011

Мауро Талеви ответил на это в списке рассылки :

Вам не хватает статистики, которая используется при создании отчета.Вы можете либо вызвать withDefaultFormats() на StoryReporterBuilder, либо добавить Format.STATS непосредственно к withFormats().

...