web-dev-qa-db-fra.com

Comment désactiver une fonctionnalité dans specflow (Gherkin) sans supprimer la fonctionnalité?

J'ai quelques fonctionnalités SpecFlow (en utilisant la syntaxe Gherkin) et je voudrais désactiver temporairement la fonctionnalité pour empêcher ses tests de s'exécuter?

Y a-t-il un attribut avec lequel je peux marquer l'entité pour ce faire? Je suppose que quelque chose qui fonctionne avec Cucumber pourrait également fonctionner avec SpecFlow.

62
Simon Keep

Vous pouvez marquer la fonctionnalité avec la balise @ignore:

@ignore @web
Scenario: Title should be matched
When I perform a simple search on 'Domain'
Then the book list should exactly contain book 'Domain Driven Design'
94
jbandi

Dans la version récente de Specflow, vous devez maintenant également fournir une raison à la balise, comme ceci:

@ignore("reason for ignoring")

EDIT: Pour une raison quelconque, cela rompt avec les espaces, mais cela fonctionne:

@ignore("reason")
11
Xena

Comme le suggère jbandi, vous pouvez utiliser la balise @ignore.

La balise peut être appliquée à:

  • un seul scénario
  • une fonctionnalité complète

Étant donné NUnit comme fournisseur de test, le résultat dans le code généré est l'insertion du

[NUnit.Framework.IgnoreAttribute ()]

à la méthode ou à la classe.

2
Be.St.
Feature: CheckSample

@ignored
Scenario Outline: check ABC    #checkout.feature:2
Given I open the applciation
When I enter username as "<username>"
And I enter password as "<password>"
Then I enter title as "<title>"
Examples:
| username | password |
| dude     | daad     |

considérez ce qui précède comme le fichier de fonctionnalité "CheckSample.feature"

Et ci-dessous est votre fichier d'étape, c'est juste un fichier partiel:

public class Sampletest {


@Given("^I open the applciation$")
public void i_open_the_applciation() throws Throwable {
    // Write code here that turns the phrase above into concrete actions
    //throw new PendingException();
}

Ci-dessous sera le fichier du coureur:

@RunWith(Cucumber.class)
@CucumberOptions(
        plugin = {"pretty", "html:target/reports", 
"json:target/reports/cucumber-report.json"},
        monochrome = true,
        tags = {"~@ignored"}
        )

public class junittestOne {

   public static void main(String[] args) {
        JUnitCore junit = new JUnitCore();
         Result result = junit.run(junittestOne.class);
   }

  }

Important à noter ici, le texte "@ignored" dans le fichier de fonctionnalité est mentionné dans CucumberOptions (balises) avec dans le fichier de classe "junittestone". Assurez-vous également que vous disposez de tous les fichiers JAR pertinents pour le concombre, le cornichon, le Junit et les autres pots disponibles dans votre projet et que vous les avez importés dans vos définitions d'étape (classe).

En raison de "ignoré", le scénario sera ignoré lors de l'exécution des tests.

2
MKod