我是Gradle的新手,正在使用5.0版本。我对cucumber相当精通。
我有一个简单的项目,它构建一个jar文件并在上面运行JUnit测试。这一切都很好。现在我想将Cucumber添加到项目中,但我希望我的.feature文件和相关的stepdef位于另一个源树(Gradle术语中的sourceSet)中。
源代码可以在Github上找到,它包含一个示例项目。
我的源代码树应该看起来像这样:
src/
cucumberTest/
java/
/...
resources/
/...
main/
java/
/...
resources/
/...
test/
/java
/...
resources/
/...
当我把。cucumberTest/resources中的特性文件和test/java中的stepdef java文件我的Cucumber测试运行良好。但是当stepdefs在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中使用cucumberjvm并将BDD测试(cucumber)与TDD测试(JUnit)分开的人。
我可以采取简单的路线,将它们混合在一起,但除了有点清教徒并且将BDD和TDD分开之外,我还想了解发生了什么以及为什么它不起作用。
感谢帮助。谢谢。
伊万
在我的好朋友Bart Kors的帮助下,我能够让它按预期工作。我更新了Github库以包含工作代码。克隆TrheeAxis/hello cumber以获得工作代码。
我是新的黄瓜和学习,并尝试自动化应用程序。我创建了一个新的测试项目。我想把特性文件和Cucumber runner类保存在一个不同的文件夹中,把所有的胶水代码保存在另一个文件夹中。 我尝试给出“@cucumberoptions(features=”project-2/resources/myfeature.feature“),但它抛出了。 谁能帮帮我吗!!
我试图将一个maven插件cucumber-jvm-parallel-plugin合并到我的Cucumber-JVM代码中,但遇到了一些问题...我认为我已经正确地配置了,但是我的cucumber特性仍然是一个接一个地运行,而不是并行地运行。 我遵循了两个教程,但找不到哪里出错了,或者如果这是意料之中的: https://opencredo.com/test-automation-concepts
我对cucumber相当陌生。当我注意到运行单个特性与运行整个套件(从IntelliJ)时的差异时,我只是通过创建几个测试特性来进行试验。 我注意到,当我运行单个特性时,它使用cucumber-jvm选项运行,在本例中,CucumberConfig(定义runner和cucumber选项的空白类)和runner没有被使用。但是,当我运行整个套件时,它作为JUnit测试运行,显然,在本例中,Conf
我正试图在Maven中基于cucumber标记运行一套JUnitCucumber特性。我可以让它们按顺序运行,但不能并行运行。我找到了一个名为小胡瓜的软件包,它可以帮我解决这个问题。 然而,我无法让测试运行,我看了github上的示例maven项目,它在Cucumber.class运行良好,但在西葫芦上抛出一个错误。 任何帮助将不胜感激。 我已在pom中包括以下内容 我是在召唤我的跑步者。 我得到
我试图运行标记功能的顺序,他们提交。 有没有我可以运行这些测试在他们各自的顺序,并有所有的结果包含在同一个报告?
争论严格适用于每个国家。 我不想为所有国家复制粘贴这个场景,我想知道我是否可以有功能/支持文件,这样我就可以取代“巴西”参数,以获得更动态的东西。 也许所有测试都像cucumber一样运行--参数“巴西”