gpt4 book ai didi

java - 使用Gradle 5和Cucumber-JVM从不同目录运行Cucumber

转载 作者:行者123 更新时间:2023-12-03 03:26:33 25 4
gpt4 key购买 nike

我是Gradle的新手,正在使用5.0版。我相当精通 cucumber 。

我有一个简单的项目,该项目构建一个jar文件并在其上运行JUnit测试。一切都很好。
现在,我想将Cucumber添加到项目中,但我希望将我的.feature文件和相关的stepdefs放在替代的源树(Gradle术语中的sourceSet)中。

可以在Github上找到源,该文件包含一个示例项目。

我的源代码树应如下所示:

src/
cucumberTest/
java/
/...
resources/
/...
main/
java/
/...
resources/
/...
test/
/java
/...
resources/
/...

当我将.feature文件放到CucumberTest / resources中,并将stepdef Java文件放到test / java中时,我的Cucumber测试运行良好。但是,当stepdef位于cucumberTest / java中时,Cucumber无法找到文件,并且出现错误,即未定义它们。
Undefined scenarios:
src/cucumberTest/resources/is_it_saturday_yet.feature:4 # Sunday isn't Saturday

2 Scenarios (1 undefined, 1 passed)
6 Steps (1 skipped, 2 undefined, 3 passed)
0m0.134s

我的build.gradle文件是这样的:
plugins {
id 'java-library'
id 'java'
id 'idea'
}

repositories {
jcenter()
mavenCentral()
}

archivesBaseName = "helloworld"
version = '1.0'

dependencies {
api 'org.apache.commons:commons-math3:3.6.1'

implementation 'com.google.guava:guava:26.0-jre'

testImplementation 'junit:junit:4.12'
testCompile("junit:junit:4.12")
testCompile('org.junit.jupiter:junit-jupiter-api:5.3.2')
testCompile('org.junit.jupiter:junit-jupiter-params:5.3.2')

testRuntime('org.junit.jupiter:junit-jupiter-engine:5.3.2')
testRuntime("org.junit.vintage:junit-vintage-engine:5.3.2")

testCompile 'io.cucumber:cucumber-java:4.2.0'
testCompile 'io.cucumber:cucumber-junit:4.2.0'
}

configurations {
cucumberRuntime {
extendsFrom testRuntime
}
}

test {
useJUnitPlatform ()
testLogging {
events "passed", "skipped", "failed"
}
}

// Cucumber stuff:

sourceSets {
cucumberTest {
compileClasspath += sourceSets.main.output
runtimeClasspath += sourceSets.main.output
}
}

configurations {
cucumberTestImplementation.extendsFrom implementation
cucumberTestRuntimeOnly.extendsFrom runtimeOnly
}

dependencies {
testCompile 'io.cucumber:cucumber-java:4.2.0'
testCompile 'io.cucumber:cucumber-junit:4.2.0'
}

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

wrapper {
gradleVersion = '5.0'
}

我在网上浏览了所有内容,但是我觉得我是唯一想在Gradle 5上使用Cucumber-jvm并将BDD测试( cucumber )与TDD测试(JUnit)分开的人。

我可以采取简单的方法,将两者混合使用,但是除了有点清教徒而且将BDD和TDD分开之外,我还想了解发生了什么以及为什么不起作用。

感谢帮助。谢谢。

我要

最佳答案

在我的好 friend Bart Kors的帮助下,我得以按预期工作。我更新了Github存储库以包含工作代码。复制TrheeAxis/hellocucumber以获取工作代码。

关于java - 使用Gradle 5和Cucumber-JVM从不同目录运行Cucumber,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53841985/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com