有人可以举例说明之前的场景和AfterScenario如何在JBehave中运行吗?
我创建了一个类,其中包含两个方法gearUp @BeforeScenario 和tearDown with @AfterScenario 注释。
但是这些方法永远不会在JBehave中调用。
需要哪些额外配置。任何代码示例都会对我们有所帮助。
虽然这种简单而又整洁的黄瓜。
以下是我的故事文件,单步(src / test / resources / storeis):
Scenario: SampleTest
Given I am test
以下是我的步骤文件
public class jbehavetc {
@Given("I am test")
public void startOnUrl(String url) {
System.out.println("I am actual test");
}
}
以下是我的Hooks文件,其中包含BeforeScenario和AfterScenario方法
public class Hooks {
@BeforeScenario
public void startSystem() throws Exception {
System.out.println("I am before scenario");
}
@AfterScenario
public void stopSystem() throws Exception {
System.out.println("I am after scenario");
}
}
为了运行上面的故事,我创建了一个跑步者文件并希望以JUnit测试运行(纠正我这不是正确的方法)
public class JBehaveRunner extends JUnitStory{
@Override
public Configuration configuration() {
return new MostUsefulConfiguration()
.useStoryLoader(
new LoadFromClasspath(getClass().getClassLoader()))
.useStoryReporterBuilder(
new StoryReporterBuilder()
.withDefaultFormats()
.withFormats(Format.HTML));
}
@Override
public InjectableStepsFactory stepsFactory() {
return new InstanceStepsFactory(configuration(), new jbehavetc(),
new Hooks());
}
public List<String> storyPaths() {
return new StoryFinder().findPaths(
CodeLocations.codeLocationFromClass(this.getClass()),
Arrays.asList("**/*.story"),
Arrays.asList(""));
}
@Test
public void run() throws Throwable {
super.run();
}
}
当我作为JUnit测试运行在跑步者之上时,没有任何事情被执行。我怎么能跑到故事之上呢?我想在运行此运行器或故事文件时需要调用之前和之后的场景方法。
答案 0 :(得分:1)
您应该使用@BeforeScenario
/ @AfterScenario
作为具有步骤实现的类处理类:您应该在步骤工厂中注册它们。
<强> BeforeAndAfterSteps.java 强>
public class BeforeAndAfterSteps {
@BeforeScenario
public void beforeScenario() throws Exception {
// setup
}
@AfterScenario
public void afterScenario() throws Exception {
// teardown
}
}
步骤出厂配置示例
new InstanceStepsFactory(configuration, new BeforeAndAfterSteps())
官方JBehave示例:
答案 1 :(得分:0)
以下转轮文件开始为我工作:
public class JBehaveRunner extends JUnitStories {
@Override
public Configuration configuration() {
return new MostUsefulConfiguration()
.useStoryLoader(
new LoadFromClasspath(getClass().getClassLoader()))
.useStoryReporterBuilder(
new StoryReporterBuilder()
.withDefaultFormats()
.withFormats(Format.HTML));
}
@Override
public InjectableStepsFactory stepsFactory() {
return new InstanceStepsFactory(configuration(), new HomePageSteps(),
new BaseEngine());
}
@Test
public void run() throws Throwable {
super.run();
}
@Override
public List<String> storyPaths() {
return new StoryFinder().findPaths(
CodeLocations.codeLocationFromClass(this.getClass()),
Arrays.asList("**/*.story"),
Arrays.asList(""));
}
}