GradleでのCucumberテストの実行に問題があります。 cucumber-jvmを使用しています。
クラスTestNGCucumberRunner
は、AbstractTestNGCucumberTests
およびtestngアノテーションを@beforesuite
、@aftersuite
..で拡張します。
通常、IntelliJでTestNGCucumberRunner.Java
を右クリックして実行すると、正常に実行されます。今私はしたい
または
TestNGCucumberRunner.Javaをjavaexecとして実行しようとしましたが、失敗します。
パッケージ内のすべての機能ファイルを実行しようとしました。 apply plugin: 'com.github.samueltbrown.cucumber'
も使用しました。
私のnewセットアップは、シナリオの並列実行、より良いレポートをサポートする別の plugin を使用し、引き続きアクティブに維持されます。
build.gradle
plugins {
...
id "com.commercehub.cucumber-jvm" version "0.11"
}
addCucumberSuite 'cucumberTest'
dependencies {
...
cucumberTestCompile 'info.cukes:cucumber-Java:1.2.5' // or -Java8 if you prefer lambda notation
}
ディレクトリ構造:
└── src
├── cucumberTest
│ ├── Java
│ │ └── package1
│ └── <- Glue
│ └── resources
│ └── package2
│ └── <- Features
├── main
│ └── Java
└── test
└── Java
package1およびpackage2の名前(他の多くの options とともに)は、build.gradleで指定できますファイル
私の前のキュウリを使用するための設定Java Gradleを使用。
build.gradle
plugins {
id "Java"
id "com.github.samueltbrown.cucumber" version "0.9"
}
dependencies {
cucumberCompile 'info.cukes:cucumber-Java:1.2.4'
}
cucumber {
formats = ['pretty','junit:build/cucumber.xml']
}
ディレクトリレイアウト
└── src
├── cucumber
│ ├── Java <- Glue
│ └── resources <- Features
└── main
│ └── Java
└── test
└── Java
コマンド
gradle cucumber
com.github.samueltbrown.cucumber
pluginを使用しないことを選択しました。最後に更新されたのは2015年8月です。代わりに、独自にビルドできる「integrationTest」(キュウリ)sourceSetを作成しました。つまり、単純なgradle build
はtest
およびintegrationTest
ソースセットをビルドします。統合テストのみを実行したい場合は、gradle integrationTest -x test
を実行するか、gradle test -x integrationTest
を使用したテストのみを実行できます。
私が従った手順はここにあります: http://www.petrikainulainen.net/programming/gradle/getting-started-with-gradle-integration-testing/
しかし、ここに要約があります:
build.gradle
sourceSets {
integrationTest {
Java {
compileClasspath += main.output + test.output
runtimeClasspath += main.output + test.output
srcDir file('src/integrationTest/Java')
}
resources.srcDir file('src/integrationTest/resources')
}
}
//Ensure that the integrationTestCompile/integrationTestRuntime configuration contains the dependencies that are required to compile/run our unit tests.
configurations {
integrationTestCompile.extendsFrom testCompile
integrationTestRuntime.extendsFrom testRuntime
}
task integrationTest(type: Test) {
testClassesDir = sourceSets.integrationTest.output.classesDir
classpath = sourceSets.integrationTest.runtimeClasspath
// Gradle skips tasks whose input and output are up to date.
// To ensure that your integration tests are run every time,
// tell Gradle that the outputs of the integrationTest task should always be considered out of date.
outputs.upToDateWhen { false }
}
// Ensure that our integration tests are run before the check task and that the check task fails the build if there are failing integration tests.
// Ensure that our unit tests are run before our integration tests. This guarantees that our unit tests are run even if our integration tests fails.
check.dependsOn integrationTest
integrationTest.mustRunAfter test
// Ensure that the HTML reports of unit and integration tests are created to different report
// build/reports/integrationTest directory contains the HTML report that contains the test results of our integration tests.
tasks.withType(Test) {
reports.html.destination = file("${reporting.baseDir}/${name}")
}
def cucumberVersion = "1.2.4"
dependencies {
integrationTestCompile(
'info.cukes:cucumber-core:' + cucumberVersion,
'info.cukes:cucumber-Java:' + cucumberVersion,
'info.cukes:cucumber-Java:' + cucumberVersion,
'info.cukes:cucumber-junit:' + cucumberVersion,
'info.cukes:cucumber-spring:' + cucumberVersion,
'org.springframework:spring-beans:4.2.5.RELEASE'
)
integrationTestRuntime(
'org.springframework:spring-context:4.2.5.RELEASE',
'org.springframework:spring-test:4.2.5.RELEASE',
'org.springframework:spring-tx:4.2.5.RELEASE'
)
}
公式ドキュメントを読むことができます。