我有一个黄瓜+ Java项目,如果我使用JUnit Runner来执行在Feature文件中编写的黄瓜方案,那么一切都运行得很好但是当我尝试使用build.gradle文件来运行它时会出现问题。
@Scenario1
Given I have URL
When When I login
Then I can see Homescreen
@Scenario2
Given I am logged in
When I make payment
Then I can see payment receipt
我创建了一个gradle任务 -
task Cucumber()<<{
println 'Running Test'
javaexec {
main = "cucumber.api.cli.Main"
classpath = configurations.cucumberRuntime + sourceSets.main.output + sourceSets.test.output
args =['--format','pretty','--format',
'html:'+System.getProperty("port")+System.getProperty("tag"),
'--format',
'json:'+System.getProperty("port")+'/cucumber.json',
'src/test/resources'
,'--glue','classpath:stepDefinition',
'--tags', System.getProperty("tag")]
}
}
Scenario2步骤由Gradle任务读取,但同时未找到Scenario1步骤。
可能是什么问题?
答案 0 :(得分:0)
如果从一个名为RunCukesTest的类中运行黄瓜测试,它可能就像
一样简单gradle -Dtest.single = RunCukesTest&lt; modulename&gt; :测试
答案 1 :(得分:0)
我的方式如下:
1)为集成测试创建一个单独的文件夹,这是首选,因为您的集成测试运行了很长时间,并且您不希望每次构建时都运行它们。
2)将以下代码添加到build.gradle:
configurations {
intTestCompile.extendsFrom testCompile
intTestRuntime.extendsFrom testRuntime
}
添加源集:
sourceSets {
main {
java {
srcDirs = ["$projectDir/src/main/java"]
}
}
test {
java {
srcDirs = ["$projectDir/src/test/java"]
}
}
intTest {
java {
compileClasspath += main.output + test.output
runtimeClasspath += main.output + test.output
srcDir file('src/intTest/java')
}
resources.srcDir file('src/intTest/resources')
}
}
运行集成测试的任务:
task intTest(type: Test) {
description = "Run integration tests (located in src/intTest/...)."
setTestClassesDirs(project.sourceSets.intTest.output.classesDir)
classpath = project.sourceSets.intTest.runtimeClasspath
outputs.upToDateWhen { false }
testLogging {
events "PASSED", "STARTED", "FAILED", "SKIPPED"
}
}
现在执行以下操作:
gradle intTest