[英]How to Run Cucumber Scenarios from Gradle file.?
我有一個Cucumber + Java項目,如果我使用JUnit Runner執行以Feature文件編寫的Cucumber方案,那么一切工作都很好,但是當我嘗試使用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")]
}
}
Gradle任務會讀取Scenario2步驟,但同時找不到Scenario1步驟。
可能是什么問題?
如果您從名為RunCukesTest的類運行黃瓜測試,則可能很簡單
gradle -Dtest.single = RunCukesTest <模塊名稱>:test
我的方法如下:
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
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.