web-dev-qa-db-ja.com

きゅうりは未定義のステップですが、IntelliJを使用して定義されています

シンプルなRESTEasy Webアプリケーションをテストするために.featureファイルを実行しようとしています: https://github.com/dashorst/jaxrs-quickstart-resteasy

ただし、IntelliJは次のように述べています。

Undefined step: Given  I am an invalid username

Undefined step: When  I perform a hello request with null username

Undefined step: Then  I receive a http response code of 400

Undefined step: When  I perform a hello request with empty username

Undefined step: Then  I receive a http response code of 400

You can implement missing steps with the snippets below:

@Given("^I am an invalid username$")
public void I_am_an_invalid_username() throws Throwable {
    // Express the Regexp above with the code you wish you had
    throw new PendingException();
}
// similar results...

以下は私のhello.featureファイル:

Feature: hello

#-------------------------------------
#next block is got the GET entry point
#-------------------------------------

#verify that with malformed input hello fails 
Scenario: invalid username should fail
Given I am an invalid username
When I perform a hello request with null username
Then I receive a http response code of 400
When I perform a hello request with empty username
Then I receive a http response code of 400

#verify that you can get correct hello response with valid username. This is the 'everything works fine' path.
Scenario: User can get correct hello response with valid username
Given I am a valid username
When I perform a hello request with valid username
Then I receive a http response code of 200

import cucumber.annotation.en.Given;
import cucumber.annotation.en.Then;
import cucumber.annotation.en.When;
import cucumber.runtime.PendingException;

IntelliJオプションの「ステップの生成」を使用して、MyStepdefsファイルを取得しました。

/**
 * Created by z on 5/21/17.
 */
public class MyStepdefs {
    @Given("^I am a valid username$")
    public void iAmAValidUsername() throws Throwable {
        // Write code here that turns the phrase above into concrete actions
        throw new PendingException();
    }

    @Given("^I am an invalid username$")
    public void iAmAnInvalidUsername() throws Throwable {
        // Write code here that turns the phrase above into concrete actions
        throw new PendingException();
    }

    @When("^I perform a hello request with null username$")
    public void iPerformAHelloRequestWithNullUsername() throws Throwable {
        // Write code here that turns the phrase above into concrete actions
        throw new PendingException();
    }

    @Then("^I receive a http response code of (\\d+)$")
    public void iReceiveAHttpResponseCodeOf(int arg0) throws Throwable {
        // Write code here that turns the phrase above into concrete actions
        throw new PendingException();
    }

    @When("^I perform a hello request with empty username$")
    public void iPerformAHelloRequestWithEmptyUsername() throws Throwable {
        // Write code here that turns the phrase above into concrete actions
        throw new PendingException();
    }

    @When("^I perform a hello request with valid username$")
    public void iPerformAHelloRequestWithValidUsername() throws Throwable {
        // Write code here that turns the phrase above into concrete actions
        throw new PendingException();
    }
}

シナリオごとに接着パスを指定しようとしましたが、機能しません。何が起こったのかわかりません。アドバイスをありがとう!

私はいくつかの既存の質問を調べましたが、どれも役に立ちません:

キュウリ:未定義のステップ、ただしステップを定義する必要があります

キュウリJVM未定義ステップ

これは私のプロジェクト構造です: enter image description here

7
OMGPOP

パッケージの古い名前への参照が保存されている場合に発生することがあります。パッケージの名前が変更されている場合は、古い名前(Cucumber Run/Debug Configurations)への参照があるかどうかを確認し、それらを削除する必要があります。

敬具

9
Mr Cas

これを試して:

  1. Javaプラグインがインストールされ、intellij ideaバージョンと互換性がある
  2. test\resourcesを作成してTest Resources Rootとしてマークします
  3. 。featuretest\resourcesに入れます
  4. フォルダーstep_definitionstest\Javaに作成し、そこにテストコードを配置します
  5. Feature構成にstep_definitionsGlueとして含まれていることを確認します
  6. Step_definitionsコードが正しくビルドされているかどうかを確認します

これらのチェックの後、ステップが認識されます。

6
Giulio Caccin

上記の正しい解決策がある間、私は解決策を段階的にお勧めします。

  1. IntelliJ内の「実行」>「構成の編集...」に進みます
  2. キュウリを選択Java「キュウリJava」リストからクラス
  3. " Glue "に、キュウリの実装があるパスを入力します。たとえば、 "com.blabla.test.steps"
  4. 「適用」ボタンをクリックします
  5. きゅうりの機能ファイルを実行/デバッグしてみてください
3
Furkan

アイデア(構成)で「接着剤」を再確認してください。私の場合、間違った(依存しているプロジェクトからの接着剤ではない)接着剤を入力しているときにこのような問題を見つけました。

0
AlexPes