首页 > 解决方案 > 在 build.gradle 中更改胶水

问题描述

如何更改glueGradle+Cucumber 项目的路径?

这是build.gradle文件的相关部分:

task cucumber() {
    dependsOn assemble, compileTestJava
    doLast{
        javaexec {
            main = "cucumber.api.cli.Main"
            classpath = configurations.cucumberRuntime + sourceSets.main.output + sourceSets.test.output
            args = ['--plugin', 'pretty', '--glue', 'gradle.cucumber', 'src/main/java/features']
        }
    }
}

当我从命令行运行时>gradle cucumber,我收到未定义场景的通知,因为胶水文件不在/main文件夹中,而是在/main/java/stepmethods.

我如何告诉 Gradle?

标签: gradleautomated-testscucumberbuild.gradlecucumber-jvm

解决方案


假设您有一个名为 acmetesting 的项目。您的项目结构可能如下所示:

acmetesting
  |
  +---src/main/java
       |
       +---com.acme.testing
            |
            +---steps
                 |
                 +---cucumberjvm302testbed
                      |
                      +---Cucumber302TestBedSteps.java

文件 Cucumber302TestBedSteps.java 是您的步骤定义文件,在上面的配置中,它会像这样开始:

 package com.acme.testing.steps.cucumberjvm302testbed;

 import cucumber.api.java.en.Given;
 import cucumber.api.java.en.Then;
 import cucumber.api.java.en.When;

 import io.cucumber.datatable.DataTable;
 import io.cucumber.datatable.DataTable.TableConverter;
 import io.cucumber.datatable.DataTableType;
 import io.cucumber.datatable.DataTableTypeRegistry;
 import io.cucumber.datatable.DataTableTypeRegistryTableConverter;
 import io.cucumber.datatable.TableEntryTransformer;

 import static org.junit.Assert.assertEquals;

 import java.util.HashMap;
 import java.util.List;
 import java.util.Locale;
 import java.util.Map;
 ooo

所以你的 args 行看起来像:

args = ['--plugin', 'pretty', '--glue', 'com.acme.testing.steps', 'src/main/java/features']

编辑 我从胶水值中删除了 cucumberjvm302testbed 以在将其他文件夹添加到步骤时增加灵活性。


推荐阅读