如何从Gradle文件运行黄瓜方案。?

时间:2018-03-16 09:36:02

标签: java gradle automation cucumber

我有一个黄瓜+ 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步骤。

可能是什么问题?

2 个答案:

答案 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