如何解析 java 或 groovy 中的 Cucumber 特征文件?

How to parse Cucumber feature file in java or groovy?

我需要解析 .feature 文件并生成 Json 数据。我目前能够使用正则表达式阅读这些步骤,但我想解析整个功能文件。

Path path= Paths.get("path to feature file").toAbsolutePath();
    try {
        File file = new File(path.toString())
                    try {
                        List<String> data = Files.readAllLines(file);

                        data.forEach(line -> {
                            Matcher stepMatcher = Pattern.compile("\b(Given|When|Then|And|But)(.*)").matcher(line);
                            if (stepMatcher.find()) {
                                System.out.println(line);
                            }
                        });
                    } catch (Exception e) {
                        // TODO Auto-generated catch block
                        e.printStackTrace();
                    }

我在 google 表格中得到了答案。答案是

public void readFeatureFile() {
    Path fpath= Paths.get("path to file").toAbsolutePath();
    String path = fpath.toString();
    String gherkin;
    try {

        gherkin = FixJava.readReader(new InputStreamReader(new FileInputStream(path), "UTF-8"));
        System.out.println("gherkin...\n" + gherkin);
        StringBuilder json = new StringBuilder();
        System.out.println("json: '" + json + "'");
        JSONFormatter formatter = new JSONFormatter(json);
        System.out.println("formatter: " + formatter.toString());
        Parser parser = new Parser(formatter);
        System.out.println("parser: " + parser.toString());
        parser.parse(gherkin, path, 0);
        System.out.println("json: '" + json + "'"); 
    } catch (UnsupportedEncodingException e) {
        e.printStackTrace();
    } catch (FileNotFoundException e) {
        e.printStackTrace();
    } catch (RuntimeException e) {
        e.printStackTrace();
    }
}

查看此 url 进行讨论 discussion link