0

Java - キュウリの例

ステップが欠落しているように見えます。欠落しているステップについて不平を言っており、それらを未定義と見なしています

.feature ファイル:

Feature: Roman Feature

  Scenario: Convert Integer to Roman Number
  Given I am on the demo page
  When I pass number 1
  Then the roman result is I


  Scenario: Convert Integer to Roman Number
  Given I am on the demo page
  When I pass number 5
  Then the roman result is V

ステップファイル:

@When("^I pass number (\\d+)$")
    public void convert_numbers_to_roman(int arg1) throws Throwable {
       // convert number

    }



@Then("^the roman result is (\\d+)$")
    public void the_roman_result_is(int result) throws Throwable {
        // match result
    }

テストを実行すると

  Scenario: Convert Integer to Roman Number [90m# net/xeric/demos/roman.feature:3[0m
    [32mGiven [0m[32mI am on the demo page[0m             [90m# DemoSteps.i_am_on_the_demo_page()[0m
    [32mWhen [0m[32mI pass number [0m[32m[1m1[0m                    [90m# DemoSteps.convert_numbers_to_roman(int)[0m
    [33mThen [0m[33mthe roman result is I[0m

6 シナリオ 2 未定義 以下のスニペットを使用して、不足している手順を実装できます。

@Then("^the roman result is I$")
public void the_roman_result_is_I() throws Throwable {
    // Write code here that turns the phrase above into concrete actions
    throw new PendingException();
}
4

2 に答える 2

1

ローマ数字を文字列としてキャッチすることを検討するため、正規表現 (.*) を使用します。

thenステップは次のようになります。

@Then("^the roman result is (.*)$")
public void the_roman_result_is_I(String expectedRoman) throws Throwable {
    // Write code here that turns the phrase above into concrete actions
    throw new PendingException();
}

これはセバスチャンの回答に似ていますが、私の見解では、より単純な正規表現です。任意の文字列をキャッチし、パラメーターとして渡します。

おそらくステップで実装するアサーションは、何か壊れているかどうかを教えてくれます。欠落しているステップをトラブルシューティングするよりも、失敗したアサーションをトラブルシューティングする方が簡単な場合があります。

于 2016-04-11T04:18:18.510 に答える
0

問題は正規表現にあります-アラビア数字( Java-ese)\dにのみ一致します。\\d

あなたが本当に欲しいのは^the roman result is ([IVMCLX]+)$. これは、1 つまたは複数のローマ数字に一致し、結果を選択した文字列に貼り付けます。

于 2016-04-10T17:15:32.870 に答える