2

jbehave 拡張機能を使用して、セレニティ (以前の thucydides) で BDD テストを作成しようとしています。これは私の話です (セレニティ jbehave の例に由来します)。

Scenario: a scenario with embedded tables
Given that I sell the following fruit
| fruit  | price |
| apples | 5.00  |
| pears  | 6.00  |
And I sell the following vegetables
| vegetable | price |
| potatoe   | 4.00  |
| carrot    | 5.50  |
When I sell fruit
Then the total cost should be total
Examples:
| goods           | total |
| apples, carrot  | 11.50 |
| apples, pears   | 11.00 |
| potatoe, carrot | 9.50 |

生成された Java コードは次のとおりです。

@Given("that I sell the following fruit\r\n| fruit  | price |\r\n| apples | 5.00  |\r\n| pears  | 6.00  |")
public void givenThatISellTheFollowingFruitFruitPriceApples500Pears600() {
    // PENDING
}

@Given("I sell the following vegetables\r\n| vegetable | price |\r\n| potatoe   | 4.00  |\r\n| carrot    | 5.50  |")
public void givenISellTheFollowingVegetablesVegetablePricePotatoe400Carrot550() {
    // PENDING
}

@When("I sell fruit")
public void whenISellFruit() {
}

@Then("the total cost should be total")
public void thenTheTotalCostShouldBeTotal() {
    // PENDING
}

テストでテーブル引数を取得するにはどうすればよいですか?

jbehave 表形式パラメーターのドキュメントに従ってパラメーターを試しましたExamplesTableが、うまくいきませんでした。

given注釈を読みやすくする方法はありますか (テーブル パラメーターを追加しないことで)。

4

1 に答える 1

3

次のようにパラメーターを取得できますExampleTable(さらに、指定された注釈をより読みやすくすることができます)。

@Given("that I sell the following fruit $exampleTable")
public void thatISellTheFollowingFruit(ExamplesTable exampleTable) {
    System.out.println("MyTable: "+exampleTable.asString());
}

宣言されたメソッドが見つからず、このステップが保留中であることが通知された場合は、ストーリー内のfruitという単語の後に空白があるかどうかを確認できます。

Given that I sell the following fruit 

テーブル内の複数の行と列にアクセスする方法は、 http: //jbehave.org/reference/stable/tabular-parameters.html の jBehave ドキュメントに記載されています。

3 つではなく、1 つのテーブルのみを作成することも考えられます。

Scenario: a scenario with embedded tables
Given I sell <product1> 
And the price is <product1price>
And I sell <product2> 
And the price is <product2price>
When I sell something
Then the total cost should be <total>
Examples:
| product1 | product1price | product2 | product2price | total |
| apples   | 5.00          | carrot   | 6.50          | 11.50 |
| apples   | 5.00          | pears    | 6.00          | 11.00 |
| potatoe  | 4.00          | carrot   | 9.50          | 13.50

パラメータにアクセスするには、Java コードを次のようにする必要があります。

@Given("I sell <product1>")
public void iSellProduct(@Named("product1") String product1) {
    //do something with product1
}

これは役に立ちますか?そうでない場合、exampleTable を読み取ろうとしたときに正確に何が機能しないのでしょうか?

于 2015-07-13T12:53:12.307 に答える