为什么 jBehave 中的复合步骤不首先执行前置条件?
Why Composite steps in jBehave doesn't execute pre-conditions first?
我正在使用 JBehave 自动化我的 Web 应用程序,但我遇到了以下问题。
我创建了一个包含所有前提条件的复合步骤。当我 运行 这些步骤时,它首先执行复合步骤中的内容,而不是 运行ning 前提条件首先..
我怎样才能 运行 使用复合步骤按顺序进行测试。请指教
以下是我的步骤文件代码。
@Given("I see given step")
public void given()
{
System.out.println("Inside GIVEN");
}
@Then("I see then step")
public void when()
{
System.out.println("Inside WHEN");
}
@Then("I see when step")
public void then()
{
System.out.println("Inside THEN");
}
@Given("I see composite step")
@Composite(steps={"Given I see given step","Then I see then step","When I see when step"})
public void composite()
{
System.out.println("Inside COMPOSITE");
}
当我运行"Given I see composite step"时,首先是复合函数运行中的sysout..我需要先执行前置条件
谢谢!
如果您尝试嵌套步骤,我相当确定 JBehave 从未设计用于处理这种情况。无论如何,你的代码中有一个小错字,你有两次“@then”步骤,其中一个说它在 "when." 中,但我明白你想要做什么(我认为)。
您应该将详细的多步骤步骤放在同一个@Given/@When/@Then/@And 步骤中。没有规定每一步只能包含一行代码,但显然应该只包含一个复合步骤。
希望这对您有所帮助。如果没有,请更详细地说明您要完成的任务,最好是使用真实示例。
@Composite 中的步骤并不意味着执行您的@Composite-Annotated-Method 的先决条件...
如果您对基于 Scenario/Story 的先决条件感到满意,您可以考虑 JBehave Lifecycle。
如果您在步骤基础上需要先决条件(如您所说),我会通过添加第 4 个 JBehave 步骤来伪造它,该步骤在您的 @Composite 块中最后调用。
以你的例子为例:
@Given("I see given step")
public void given()
{
System.out.println("Inside GIVEN");
}
@When("I see when step")
public void then()
{
System.out.println("Inside THEN");
}
@Then("I see then step")
public void when()
{
System.out.println("Inside WHEN");
}
@Then("your step executed last")
public void then()
{
// logic from composite()
System.out.println("Inside COMPOSITE");
}
@Given("I see composite step")
@Composite(steps={"Given I see given step","When I see when step","Then I see then step","Then your step executed last"})
public void composite()
{
//logic got moved
}
我正在使用 JBehave 自动化我的 Web 应用程序,但我遇到了以下问题。
我创建了一个包含所有前提条件的复合步骤。当我 运行 这些步骤时,它首先执行复合步骤中的内容,而不是 运行ning 前提条件首先..
我怎样才能 运行 使用复合步骤按顺序进行测试。请指教
以下是我的步骤文件代码。
@Given("I see given step")
public void given()
{
System.out.println("Inside GIVEN");
}
@Then("I see then step")
public void when()
{
System.out.println("Inside WHEN");
}
@Then("I see when step")
public void then()
{
System.out.println("Inside THEN");
}
@Given("I see composite step")
@Composite(steps={"Given I see given step","Then I see then step","When I see when step"})
public void composite()
{
System.out.println("Inside COMPOSITE");
}
当我运行"Given I see composite step"时,首先是复合函数运行中的sysout..我需要先执行前置条件
谢谢!
如果您尝试嵌套步骤,我相当确定 JBehave 从未设计用于处理这种情况。无论如何,你的代码中有一个小错字,你有两次“@then”步骤,其中一个说它在 "when." 中,但我明白你想要做什么(我认为)。
您应该将详细的多步骤步骤放在同一个@Given/@When/@Then/@And 步骤中。没有规定每一步只能包含一行代码,但显然应该只包含一个复合步骤。
希望这对您有所帮助。如果没有,请更详细地说明您要完成的任务,最好是使用真实示例。
@Composite 中的步骤并不意味着执行您的@Composite-Annotated-Method 的先决条件...
如果您对基于 Scenario/Story 的先决条件感到满意,您可以考虑 JBehave Lifecycle。
如果您在步骤基础上需要先决条件(如您所说),我会通过添加第 4 个 JBehave 步骤来伪造它,该步骤在您的 @Composite 块中最后调用。
以你的例子为例:
@Given("I see given step")
public void given()
{
System.out.println("Inside GIVEN");
}
@When("I see when step")
public void then()
{
System.out.println("Inside THEN");
}
@Then("I see then step")
public void when()
{
System.out.println("Inside WHEN");
}
@Then("your step executed last")
public void then()
{
// logic from composite()
System.out.println("Inside COMPOSITE");
}
@Given("I see composite step")
@Composite(steps={"Given I see given step","When I see when step","Then I see then step","Then your step executed last"})
public void composite()
{
//logic got moved
}