Comment puis-je créer un Concombre DataTable?
Je veux configurer manuellement un Concombre DataTable à l'aide de Java (au lieu de Cornichon).
Cornichon, mon tableau devrait ressembler à ceci:
| h1 | h2 |
| v1 | v2 |
Mon Java ressemble tellement loin de cela:
List<String> raw = Arrays.asList( "v1", "v2");
DataTable dataTable = DataTable.create(raw, Locale.getDefault(), "h1", "h2");
Ce que je reçois est de retour d'une DataTable avec en-têtes, mais pas de contenu. C'est aussi plus de temps que prévu:
| h1| h2 |
| | |
| | |
Je suis sûr que la solution doit être assez simple, mais je suis un peu à une perte de la droite maintenant. Que dois-je faire pour obtenir mon tableau?
Je pense que je l'ai eu:
List<List<String>> raw = Arrays.asList( Arrays.asList("h1", "h2"), Arrays.asList("v1", "v2") ); DataTable dataTable = DataTable.create(raw, Locale.getDefault(), "h1", "h2");
Mais les deux derniers paramètres de la méthode de création de ne semble pas s'habituer - et je suis sûr qu'il doit y avoir un moyen plus élégant que ce que j'ai fait là...OriginalL'auteur Christian | 2014-02-11
Vous devez vous connecter pour publier un commentaire.
Espère que cette aide. Si vous êtes plein de Cornichons étape ressemble à...
Vous voulez que cela en Java. (Notez que le le concombre.l'api.DataTable transmis est le programme d'installation avec vos valeurs attendues avant le test).
Je dirai que dans les exemples par Aslak Hellesøy il n'est pas réellement l'utilisation de la DataTable.
Qu'il allait faire votre exemple quelque chose comme ceci:
Pour un Exemple Complet pour en savoir plus découvrez:
EDIT:
Désolé pour l'overkill @Christian, peut-être vous n'avez pas besoin de tout le contexte de la façon de l'utiliser dans une application, il suffit d'un moyen propre à utiliser DataTable.créer et la plupart de ce que j'ai posté a une autre manière d'une peau de chat avec la classe d'Entrée (ce Qui peut être utile pour ceux qui lisent cela plus tard).
Donc, la façon dont vous l'avez fait dans votre commentaire n'était pas très loin. Je ne suis pas un pro de l'collections, donc je ne peux pas vous donner tous les conseils pour rendre votre 2D Liste de Chaînes de caractères, mais je peux préciser sur les deux derniers paramètres (si vous utilisez tous les 4).
Format dans le seconde à la dernière param.
dernier pour les Noms de Colonne, alors il sera automatiquement lu de votre haut de la ligne de chaîne de caractères pour les noms de colonne.
.
Vous pouvez également utiliser le constructeur qui serait tout aussi bordélique. 🙂
P. S.: L'autre problème, c'est que - si vous souhaitez créer un DataTable vous-même, et non pas à l'aide d'une fonction fichier - vous pouvez vous retrouver avec juste la ligne d'en-tête et l'absence de valeurs, comme je l'ai fait...
Je suis d'accord avec vous. Nous ne devrions pas avoir à lire tout le code source pour comprendre cela. J'ai rencontré le même problème lorsque vous essayez de lier Webdriver, où la documentation n'a pas expliquer, même pour vous permettre d'utiliser ce qu'il y avait sans chasse par le biais de la source. Aslak est un mec super intelligent, et très au-dessus des choses. Quand j'ai essayé de mettre à jour la documentation pour lui sur Git, il a passé plus de temps à me dire pourquoi ils n'ont pas besoin d'être mis à jour, sur une simple pression et l'adaptation de la lingo pour répondre à ce qu'il cherchait.
Le concombre est un outil puissant, mais pour la jvm, j'ai été très énervé en essayant de le mettre en œuvre dans le monde réel, tests, donc je suis en attente pour voir si il arrive à maturité pour un sort. J'espère que vous pourrez récupérer votre code, de sorte que vous pouvez obtenir DataTable.créer() pour manger plus de fonctionnalité des fichiers sans trop de piratage. 🙂
si vous voulez contribuer à l'amélioration de l'concombre docs, veuillez jeter un oeil ici: github.com/cucumber/docs.cucumber.io - nous sommes actuellement en train de travailler sur elle, et pourrait utiliser un peu d'aide 🙂
OriginalL'auteur Eric D. Johnson
Au lieu de DataTable on peut effectivement créer une Liste d'objet personnalisé en utilisant les mêmes champs dans la table de données.
pour, par exemple,
Maintenant votre Étape de la classe doit définir une Étape comme
Et votre Livre de classe devrait ressembler à
Depuis les champs sont tous public donc pas de getter/setter sont nécessaires. Si vous décidez de déclarer privé (ne vois pas pourquoi), puis s'assurer d'ajouter des getters/setters.
Espère que cette aide
OriginalL'auteur Sanjay Bharwani