web-dev-qa-db-fra.com

Annotation des options de concombre

Cucumber-jvm javadocs indique que le rôle de l'élément glue est de spécifier l'emplacement des définitions de pas et des points d'ancrage. Cependant, cela ne semble pas fonctionner pour moi. Disons que j'ai mes fonctionnalités dans le répertoire a et mes définitions d'étape dans le répertoire b. Ensuite,

@Cucumber.Options(
        features= "directory_a", 
            glue="directory_b"
)

chargera mes fichiers de fonctionnalités à partir de directory_a, mais ne chargera pas mes définitions d’étape de directement_b. Cependant, si j'utilise

@Cucumber.Options(
        features= {"directory_a", "directory_b"}
)

mes fonctionnalités de directory_a sont chargées et mes définitions d'étape de directory_b sont également récupérées. Ce qui est exactement ce que je veux, cependant, je ne comprends pas pourquoi le premier ne fonctionne pas? J'imagine que cela a quelque chose à voir avec l'attente que l'URI soit formaté différemment (peut-être que je dois ajouter un chemin de classe: // ou quelque chose du genre), mais je ne trouve aucune information à ce sujet dans la documentation.

16
JustDanyul

J'ai utilisé avec succès quelque chose comme:

@RunWith(Cucumber.class)
@Cucumber.Options(
    //this code will only look into "features/" folder for features
    features={"classpath:features/"},
    glue = { "com.mycompany.cucumber.stepdefinitions", "com.mycompany.cucumber.hooks" },
    format = { "com.mycompany.cucumber.formatter.RuntimeInfoCatcher", "json:target/cucumber.json" },
    tags = { "@working" }
    )
public class CucumberStarterIT {
}

En regardant la doc sur http://cukes.info/api/cucumber/jvm/javadoc/cucumber/api/junit/Cucumber.Options.html il spécifie les options pour être du type String[] alors peut-être que ce n'est pas prévu travailler "bien" si vous ne lui donnez pas une liste à valeur unique. Essayez glue={"directory_b"} et voyez ce qui se passe pour vous.

17
Dmitry Sharkov

Bonjour, tout dépend de la structure de votre projet. Par exemple, si vous ajoutez le "Répertoire_a" (répertoire contenant les fichiers de caractéristiques) au niveau racine et StepDefinition, Crochets sous src> test> Java "Répertoire_b" et la classe TestRunner au même niveau (src> test> Java) dans " Directory_c "

Dir_a | Src | --- main | --- test | ------ Java | ------ Dir_b | ------ Dir_c

Vous dites "Dir_b" pendant que vous êtes dans "Dir_c" Il identifiera "Dir_b" ou n'importe quel répertoire du même niveau avec tous les chemins supplémentaires, donc Ce sera Glue = {"Dir_b"} , Mais lorsque vous regardez le répertoire qui inclut le fichier de fonctionnalité, vous devez indiquer le chemin du niveau racine Dans ce cas, il s'agit de Features = {"Dir_a"} Ou Donner le chemin actuel, par exemple: - "E: // Nom_Projet // Dir_a" devrait également fonctionner

Si votre répertoire de fonctionnalités n'est PAS au niveau racine, veillez à indiquer le chemin tel que "src/chemin vers le répertoire de fonctionnalités" 

Cela fonctionnera bien :)

0
MUDITHA PERERA