有人可以帮助我运行一个JBehave故事吗?我在Eclipse中有一个Maven项目。
故事是:
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());
}
}
我的嵌入者是:
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);
在我看来,步骤文件没有被执行(至少在调试期间执行不会停止在我放置的步骤类中的断点)。以下是执行的输出:
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)
有没有人知道为了运行这个故事我应该做些什么?
答案 0 :(得分:3)
Mauro Talevi在a mailing list中回答了这个问题:
您缺少报告生成中使用的统计信息。您可以 或者在
withDefaultFormats()
上调用StoryReporterBuilder
,或者添加Format.STATS
直接withFormats()
。