使用 Gradle 但没有 (Java)-Runner 的空手道

Using Karate with Gradle but without (Java)-Runner

我正在尝试使用空手道,因此创建了一个 .feature 和一个 config.properties 文件。当然我不想在每个项目中签入空手道的来源,所以我想使用Gradle下载空手道然后运行它。

不幸的是,我无法让它工作。我的 build.gradle 文件如下所示:

apply plugin: 'java'

test {
    systemProperty "cucumber.options", System.properties.getProperty("cucumber.options")
    systemProperty "karate.env", System.properties.getProperty("karate.env")
    outputs.upToDateWhen { false }
}

sourceSets {
    test {
        resources {
            srcDir file('features')
            include 'rest.feature'
        }
    }
}

dependencies {
  testCompile 'com.intuit.karate:karate-junit4:0.7.0'
  testCompile 'com.intuit.karate:karate-apache:0.7.0'
}

wrapper {
  gradleVersion = 4.6
}

当我 运行 ./gradlew test -Dtest=<featureName> 时,.feature 文件只是被复制到 build/resources/test 而不是 运行 安装套件。

你能告诉我如何正确设置吗?我不想将 Java class 与 @RunWith(Karate.class) 注释一起使用,因为这在每个项目中都是不必要的样板代码。

我个人认为您应该 使用Java class 因为您可以利用dev-mode JUnit report - 但这只是我的 2c .

无论如何我都不是 Gradle 专家,但是来自社区的这个 Gradle 示例可能会帮助您找出是否遗漏了什么:https://github.com/intuit/karate/blob/master/karate-demo/build.gradle

它有一些 un-necessary 依赖项,您当然应该忽略这些依赖项。

编辑:刚刚意识到您期望 运行 没有 any Java 运行 的功能,抱歉,这是不可能的命令行。您可以 "right-click-and-run" 来自 IntelliJ 和 Eclipse(安装正确的插件,参考文档)——这是大多数团队每天都在做的事情。

如果你做了一些研究,你应该能够编写 one Java class 可以接受命令行参数或系统 属性 和 运行 您指定的功能。再次恕我直言,Java 运行ner 更方便(更少打字)或仅使用 IDE 支持。