1

実行中のシナリオの機能説明を他のシステムに報告する必要があります。cucumber.api.Scenario からシナリオ名を取得できました。機能の説明はどのようにできますか? 使用できるインターフェイスはありますか?

cucumber-Jvm を使用して、機能記述ランタイムを取得します。実行される各シナリオは、異なる機能ファイルからのものである可能性があるためです。

4

1 に答える 1

2

から Gherkin 機能を取得することで、機能の説明を取得できますCucumberFeature

List<CucumberFeature> cucumberFeatures = new ArrayList<>();
FeatureBuilder featureBuilder = new FeatureBuilder(cucumberFeatures);

featureBuilder.parse(new FileResource(featureFile.getParentFile(), featureFile), new ArrayList());
for (CucumberFeature feature: cucumberFeatures) {   
    // Here we retrieve the Gherkin model        
    Feature f = feature.getGherkinFeature();

    // Here we get name and description of the feature.
    System.out.format("%s: %s%n", f.getName(), f.getDescription());
}

別の解決策は、独自のformatterを実装し、Gherkin で直接解析を行うことです。

public class MyFormatter implements Formatter {

    private List<Feature> features = new ArrayList<>();

    public static void main(String... args) throws Exception {

            OutputStreamWriter out = new OutputStreamWriter(System.out, "UTF-8");

            // Read the feature file into a string.
            File f = new File("/path/to/file.feature");
            String input = FixJava.readReader(new FileReader(f));

            // Parse the gherkin string with our own formatter.
            MyFormatter formatter = new MyFormatter();
            Parser parser = new Parser(formatter);
            parser.parse(input, f.getPath(), 0);

            for (Feature feature: formatter.features) {
                System.out.format("%s: %s%n", feature.getName(), feature.getDescription());
            }
    }

    @Override
    public void feature(Feature feature) {
        features.add(feature);
    }

    // ...
    // follow all the Formatter methods to implement.
}
于 2015-10-03T08:04:57.997 に答える