web-dev-qa-db-fra.com

Étape non définie du concombre, bien que définie à l'aide d'IntelliJ

J'essaie de lancer un fichier .feature pour tester une simple application Web RESTEasy: https://github.com/dashorst/jaxrs-quickstart-resteasy

Cependant, l’IntelliJ continue de dire que:

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...

Ci-dessous, mon fichier 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;

J'ai utilisé l'option "générer des étapes" d'IntelliJ et obtenu le fichier 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();
    }
}

J'avais essayé de spécifier le chemin de collage pour chaque scénario, mais cela ne fonctionnait pas. Je ne suis pas sûr de ce qui s'est passé. Merci pour tout conseil!

J'ai examiné plusieurs questions existantes mais aucune d'entre elles n'aide: 

Concombre: étape non définie, bien que cette étape doive être définie

Etape non définie de la JVM de concombre

Voici la structure de mon projet:  enter image description here

5
OMGPOP

Parfois, cela se produit lorsqu'il existe des références enregistrées aux anciens noms des packages. Si les packages ont été renommés, vous devez vérifier s’il existe des références aux anciens noms (Configurations Cucumber Run/Debug) et les supprimer.

Sincères amitiés

4
Mr Cas

Essaye ça:

  1. Le plug-in Cucumber for Java est installé et compatible avec la version de votre idée intellij
  2. Créez et marquez test\resources comme Test Resources Root
  3. Mettez le .feature in test\resources
  4. Créez le dossier step_definitions in test\Java et placez-y votre code de test
  5. Vérifiez que la configuration Feature contient step_definitions comme Glue
  6. Vérifiez si le code step_definitions est construit correctement

Après ces vérifications, les étapes doivent être reconnues.

2
Giulio Caccin

Je recommanderai une solution étape par étape tant qu'il existe les solutions correctes ci-dessus.

  1. Passez par "Exécuter> Modifier les configurations ..." dans votre IntelliJ
  2. Sélectionnez votre classe Java de concombre dans la liste "Cucumber Java".
  3. Remplissez le " Glue " avec le chemin où se trouve votre implémentation de concombre. Par exemple, "com.blabla.test.steps" 
  4. Cliquez sur le bouton "Appliquer"
  5. Essayez d'exécuter/déboguer votre fichier de caractéristiques de concombre
2
Furkan