我正在尝试在 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'
}
感谢@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 }
}