web-dev-qa-db-ja.com

Gradleを使用してキュウリのテストを実行する方法

GradleでのCucumberテストの実行に問題があります。 cucumber-jvmを使用しています。

クラスTestNGCucumberRunnerは、AbstractTestNGCucumberTestsおよびtestngアノテーションを@beforesuite@aftersuite ..で拡張します。

通常、IntelliJでTestNGCucumberRunner.Javaを右クリックして実行すると、正常に実行されます。今私はしたい

  1. GradleでTestNGCucumberRunner.Javaを呼び出す

または

  1. Gradleのすべての機能を呼び出す

TestNGCucumberRunner.Javaをjavaexecとして実行しようとしましたが、失敗します。

パッケージ内のすべての機能ファイルを実行しようとしました。 apply plugin: 'com.github.samueltbrown.cucumber'も使用しました。

10
user3350712

UPDATE:

私の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
9

com.github.samueltbrown.cucumberpluginを使用しないことを選択しました。最後に更新されたのは2015年8月です。代わりに、独自にビルドできる「integrationTest」(キュウリ)sourceSetを作成しました。つまり、単純なgradle buildtestおよび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'
    )
}
4
Miguel Reyes

公式ドキュメントを読むことができます。

https://docs.cucumber.io/tools/Java/#gradle

3
hnrain