java - 如何使用基于gradle的项目生成附带失败的屏幕截图和cumul.json文件的 cucumber html报告

标签 java gradle build.gradle

出于安全原因,我使用gradle尝试生成 cucumber html报告并附有失败的屏幕截图,但我无法在 build.gradle 文件中添加在线插件,因此我必须下载所需的jar和插件,并在构建中手动实现和配置库。 gradle 文件。
请建议如何在build.gradle中配置TestRunner文件以及如何使用cumul.json文件生成 cucumber HTML报告
build.gradle文件

plugins {
    id 'java'
    id 'idea'
}

group 'org.example'
version '1.0-SNAPSHOT'


configurations {
    cucumberRuntime.extendsFrom testRuntime
}

task cucumber() {
    dependsOn assemble, compileTestJava
    doLast {
        javaexec {
            main = "io.cucumber.api.cli.Main"
            classpath = configurations.cucumberRuntime + sourceSets.main.output + sourceSets.test.output
            args = ['--plugin', 'pretty', '--glue', 'stepDef', 'src/test/java']
        }
    }
}



repositories {

    mavenCentral()
}
dependencies {
    implementation fileTree(dir:System.getProperty("user.dir")+'/Plugin',include:['*.jar'])
    implementation files('junit-4.12')
    implementation files('testng-6.7.jar')
    implementation files('junit-jupiter-api-5.6.2')
    implementation files('hamcrest-all-1.3')
    .....................


TestRunner文件
package TestRunner;

import io.cucumber.junit.Cucumber;
import io.cucumber.junit.CucumberOptions;
import org.junit.runner.RunWith;

@RunWith(Cucumber.class)
@CucumberOptions(
        features = "src/test/resources",
        glue = "StepDefs",
        plugin = {
                "pretty", "html:target/cucumber-html-report", "json:target/cucumber.json", "pretty:target/cucumber-pretty.txt"
        }
)

public class TestRunner {

}

最佳答案

不论StepDefs是什么
使用gradle cucumber --info运行可能对调试很有用...因为错误消息finished with non-zero exit value 1仅表示“错误”或“未成功”。
首先,您可能需要这些Java依赖项:

testImplementation 'io.cucumber:cucumber-java:6.5.0'
testImplementation 'io.cucumber:cucumber-junit:6.5.0'
正如documentation所建议的那样,可能必须将gradle.cucumber作为--glue添加到参数args中。任务依赖项compileTestJava应该是testClasseshtml通常是一个插件,需要一个输出目录,因此应类似于以下内容:
task cucumber() {
    dependsOn assemble, testClasses
    doFirst {

    }
    doLast {
        javaexec {
            main = 'io.cucumber.core.cli.Main'
            classpath = configurations.cucumberRuntime + sourceSets.main.output + sourceSets.test.output
            args = [
                '--plugin', 'pretty', 'html:target/reports',
                '--glue', 'gradle.cucumber',
                'src/test/resources'
            ]
        }
    }
}
这些args也可以用Java注释。不确定两次定义参数时,这毫无意义,只会造成困惑。
确保遵循说明#4:

Add feature .feature files and associated step mapping classes .java in src/test/resources and src/test/java respectively in a gradle.cucumber package.


-g, --glue PATH Where glue code (step definitions, hooks and plugins) are loaded from.


使用jUnit运行时,还可以通过junit-platform.properties文件传递选项。

最简单的方法可能是从 cucumber-java-skeleton 开始(已知它正在工作)。

关于java - 如何使用基于gradle的项目生成附带失败的屏幕截图和cumul.json文件的 cucumber html报告,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63498254/

相关文章:

android - 卡在 androiddebugCompileTest 上并显示 gradle 构建错误

android - 如何确定约束布局的正确版本

java - Oracle 在 Java 中的 RETURNING INTO 用法(JDBC,Prepared Statement)

ant - 使用ant将电子邮件发送到gradle中的许多地址

android - 跨模块共享编译依赖项

java - path 和 baseDir 都不能为 null 或空字符串

android - 没有发送有关应用更新的Google Play推送通知。我想念什么吗?

java - 从一个类获取值以在另一个类中使用它(java)

Java Cucumber 日期表

java - If..Else 语句在 JFrame 程序中的行为不可预测(不确定?)