web-dev-qa-db-fra.com

Exécuter l'étape Cucumber avant / après une fonction spécifique

Je veux spécifier certaines étapes de configuration et de démontage pour chaque fichier de fonctionnalité spécifique. J'ai vu des hooks qui permettent au code de s'exécuter avant chaque scénario et des hooks pour exécuter du code avant chaque fonctionnalité, mais je veux spécifier que le code doit s'exécuter une fois avant et après l'exécution de tous les scénarios pour une fonctionnalité spécifique.

Est-ce possible?

26
Dave Novelli

Utilisez-vous concombre-jvm? J'ai trouvé un article qui correspond à vos besoins.

http://zsoltfabok.com/blog/2012/09/cucumber-jvm-hooks/

Fondamentalement, n'utilisez pas JUnit @BeforeClass et @AfterClass pour cela, car ils ne connaissent pas les balises de crochet de concombre. Vous souhaitez que les méthodes Init et Teardown s'exécutent pour certains scénarios uniquement, n'est-ce pas?

14
Oh Chin Boon

C'est le cas si vous utilisez junit pour exécuter vos tests. Nous utilisons les annotations pour créer une classe de test unitaire et une classe d'étapes distinctes. La substance @Before standard va dans la classe steps, mais l'annotation @BeforeClass peut être utilisée dans la classe de test unitaire principale:

@RunWith(Cucumber.class)
@Cucumber.Options(format = {"json", "<the report file"},
    features = {"<the feature file>"},
    strict = false,
    glue = {"<package with steps classes"})
public class SomeTestIT {
    @BeforeClass
    public static void setUp(){
       ...
    }

    @AfterClass
    public static void tearDown(){
       ...
    }
}
16
Wouter

Essayez ceci:

Dans le fichier de fonction:

@tagToIdentifyThatBeginAfterShouldRunForThisFeatureOnly
Feature : My new feature ....

Dans Stepdefinitions.Java:

@Before("@tagToIdentifyThatBeginAfterShouldRunForThisFeatureOnly")
public void testStart() throws Throwable {
}

@After("@tagToIdentifyThatBeginAfterShouldRunForThisFeatureOnly")
public void testStart() throws Throwable {
}
1
Abhishek Bedi