如何使用自定义项目结构在 Gradle 中配置空手道测试

问题描述 投票:0回答:1

我正在尝试在 Gradle 项目中设置空手道测试,但我的项目具有自定义目录结构,并且我在正确配置源集时遇到问题。这是我的项目结构:

我的项目/ └── 源文件/ └── 系统测试/ └── java/ └── 资源/

我没有使用标准的 src/main 目录来存储主应用程序代码,而且我也没有 src/test 目录。我需要在此结构中配置空手道测试,但空手道常用的 Gradle 脚本似乎不适用。

有人可以提供有关如何使用 Gradle 在此自定义目录结构中配置空手道测试的指导吗?我想为不同类型的测试(例如集成测试、系统测试)创建单独的源集,指定源目录并正确设置依赖项。

在此类项目结构中,任何特定于空手道的帮助或示例 Gradle 配置将不胜感激!

我尝试了在线搜索建议的几个选项,但没有一个有效。

另外,我不确定堆栈溢出中发布的这个现有解决方案是否适用于 Maven - src/test 之外的其他文件夹中的空手道测试??。我们需要类似的 gradle 东西。

以下是我的build.gradle文件的完整内容。


plugins {
    id 'java'
}

dependencies {
    implementation "com.intuit.karate:karate-junit5:1.4.1"
}

sourceSets {
    test {
        resources {
            srcDir file('src/systemTest/java')
            exclude '**/*.java'
        }
    }
}

configurations.all {
    resolutionStrategy {
        force 'com.intuit.karate:karate-junit5:1.4.1'
    }
}

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

repositories {
    mavenCentral()
    // mavenLocal()
}

task karateDebug(type: JavaExec) {
    classpath = sourceSets.test.runtimeClasspath
    main = 'com.intuit.karate.cli.Main'
}

build.gradle karate
1个回答
0
投票

感谢@peter-thomas 的快速更新!!!

我设法解决了这个问题,这是适用于自定义文件夹结构(例如 /src/systemTest/java)的 build.gradle 文件内容。

plugins {
    id 'java'
}

repositories {
    mavenCentral()
}

dependencies {
    testImplementation "com.intuit.karate:karate-junit5:1.4.1"
}

sourceSets {
    test {
        java {
            srcDirs 'src/systemTest/java'
        }
        resources {
            srcDir 'src/systemTest/java'
            exclude '**/*.java'
        }
    }
}

task runSystemTests(type: Test) {
    useJUnitPlatform()
    systemProperty "karate.options", System.properties.getProperty("karate.options")
    systemProperty "karate.env", System.properties.getProperty("karate.env")
    outputs.upToDateWhen { false }
}
© www.soinside.com 2019 - 2024. All rights reserved.