Selenium webdriver 如何通过Gradle生成黄瓜范围报告4

Selenium webdriver 如何通过Gradle生成黄瓜范围报告4,selenium-webdriver,gradle,cucumber,build.gradle,build-automation,Selenium Webdriver,Gradle,Cucumber,Build.gradle,Build Automation,我正在通过gradle执行Cucumber自动化测试脚本,虽然我能够成功地执行测试,但没有生成报告。我确实尝试过以下级别的任务 一次一个 Cumber gradle任务复制如下 a)对于下面的gradle任务,我能够执行不生成报告的脚本,因为我没有在args中包含报告语句 task cucumber() { dependsOn assemble, testClasses doLast { javaexec { main = "io

我正在通过gradle执行Cucumber自动化测试脚本,虽然我能够成功地执行测试,但没有生成报告。我确实尝试过以下级别的任务 一次一个

Cumber gradle任务复制如下

a)对于下面的gradle任务,我能够执行不生成报告的脚本,因为我没有在args中包含报告语句

task cucumber() {
    dependsOn assemble, testClasses
    doLast {
        javaexec {
            main = "io.cucumber.core.cli.Main"
            classpath = configurations.cucumberRuntime + sourceSets.main.output + sourceSets.test.output
            
            args = ['--plugin', 'pretty', 
                  
                    '--glue','com.inspire.brands.test.stepdefinition',
                    
                    'src/test/resources','src/main/java',

                    '--tags', '@Api'        
                    ]
           
               }
       
        }
    }
b)我试图包括下面的gradle任务中所示的与报告相关的几个语句,但失败了,出现了一个异常

    task cucumber() {
        dependsOn assemble, testClasses
        doLast {
            javaexec {
                main = "io.cucumber.core.cli.Main"
                classpath = configurations.cucumberRuntime + sourceSets.main.output + sourceSets.test.output
                
                args = ['--plugin', 'pretty', 'json:target/InspireBrands.json', 'com.aventstack.extentreports.cucumber.adapter.ExtentCucumberAdapter:',
                
                        '--monochrome', 'true',
                
                        '--features','src\test\resources\featurefile',
                
                        '--glue','com.inspire.brands.test.stepdefinition',
                        
                        'src/test/resources','src/main/java', 
    
                        '--tags', '@Api'         
                        ]
              
            }
           
        }
      }
例外情况详情如下
在1s内成功构建
6项可执行任务:6项最新任务
E:\GradleProj\u workspace\GadleDemoProj>gradlecumber
>配置项目:
http://product-api-qa.qa.dp-prv.inspirebrands.eastus.cloudapp.azure.com
http://product-api-qa.qa.dp-prv.inspirebrands.eastus.cloudapp.azure.com
E:\GradleProj\u工作区\GadleDemoProj
>任务:黄瓜失败
线程“main”java.lang.IllegalArgumentException:com.aventstack.extentreports.cucumber.adapter.extentCumberAdapter:中的异常无效。尝试URI[:行]*
位于io.cumber.core.model.FeatureWithLines.parse(FeatureWithLines.java:56)
在io.cumber.core.options.RuntimeOptionsParser.parse(RuntimeOptionsParser.java:131)中
位于io.cumber.core.options.CommandlineOptionsParser.parse(CommandlineOptionsParser.java:25)
位于io.cumber.core.options.CommandlineOptionsParser.parse(CommandlineOptionsParser.java:29)
位于io.cumber.core.cli.Main.run(Main.java:29)
位于io.cumber.core.cli.Main.Main(Main.java:14)
原因:java.lang.IllegalArgumentException:索引68处的预期方案特定部分:com.aventstack.extentreports.cucumber.adapter.extentcumber适配器:
在java.net.URI.create(URI.java:852)
在io.cumber.core.model.FeaturePath.parseProbableURI(FeaturePath.java:72)中
位于io.cumber.core.model.FeaturePath.parse(FeaturePath.java:57)
位于io.cumber.core.model.FeatureWithLines.parseFeaturePath(FeatureWithLines.java:77)
位于io.cumber.core.model.FeatureWithLines.parse(FeatureWithLines.java:53)
... 还有5个
原因:java.net.urisyntaxeption:索引68处的预期方案特定部分:com.aventstack.extentreports.cucumber.adapter.extentcumberAdapter:
在java.net.URI$Parser.fail(URI.java:2848)
位于java.net.URI$Parser.failExpecting(URI.java:2854)
位于java.net.URI$Parser.parse(URI.java:3057)
位于java.net.URI。(URI.java:588)
创建(URI.java:850)
... 9更多
失败:生成失败,出现异常。
*其中:
生成文件“E:\GradleProj\u workspace\GadleDemoProj\Build.gradle”行:104
*出了什么问题:
任务“”的执行失败。
>进程“command”C:\Program Files\Java\jdk1.8.0\u 202\bin\Java.exe“”以非零退出值1完成
*尝试:
使用--stacktrace选项运行以获取堆栈跟踪。使用--info或--debug选项运行以获得更多日志输出。使用--scan运行以获得完整的洞察力。
*得到更多的帮助https://help.gradle.org
此版本中使用了不推荐的Gradle功能,使其与Gradle 7.0不兼容。
使用“--warning mode all”显示单个弃用警告。
看见https://docs.gradle.org/6.5.1/userguide/command_line_interface.html#sec:command_line_warnings
生成在1s内失败
6项可执行任务:1项已执行,5项最新
E:\GradleProj\u工作区\GadleDemoProj>
**---------------------------------------------------------------------------------------------------------------**
我不确定在上面的“b”级任务中我哪里出错了。请尽快帮助我,因为我在这里浪费了很多时间尝试各种可能性。我还想让你知道我是格拉德尔的新人

还复制了CucumberRunner文件中的cucumberoptions

@CucumberOptions(features = { "classpath:featurefile" }, glue = { "classpath:com.inspire.brands.test.stepdefinition",
            "classpath:com.inspire.brands.helper" }, 
            
            plugin = { "pretty", "json:target/InspireBrands.json", "com.aventstack.extentreports.cucumber.adapter.ExtentCucumberAdapter:" },
    
            monochrome = true, tags = "@Api")

请去掉json:为了摆脱这个异常,您正在对无效的方案进行wrt

下面给出了完整的解决方案

task cucumber() {
    dependsOn assemble, testClasses
    doLast {
        javaexec {
            main = "io.cucumber.core.cli.Main"
            classpath = configurations.cucumberRuntime + sourceSets.main.output + sourceSets.test.output
            
            
            args = ['--plugin', 'pretty', 
            
                    '--plugin', 'json:target/InspireBrands.json', 
                    
                    '--plugin',  'com.aventstack.extentreports.cucumber.adapter.ExtentCucumberAdapter:Report',
            
                    '--glue','com.inspire.brands.test.stepdefinition',
                    
                    'src/test/resources','src/main/java',

                    '--tags', '@Api'         
                ]
                  
        }
       
    }
  }

下面给出了我完整的
build.gradle
内容

/*
 * This file was generated by the Gradle 'init' task.
 *
 * This generated file contains a sample Java Library project to get you started.
 * For more details take a look at the Java Libraries chapter in the Gradle
 * User Manual available at https://docs.gradle.org/6.3/userguide/java_library_plugin.html
 */



plugins {
    id 'java'
    id 'maven-publish'
    id 'java-library'
    id 'java-gradle-plugin'
}

repositories {
   
    mavenCentral()
        jcenter()
}

task deleteGraphicsAssets(type: Delete) {
    delete "build"
}

 Properties props = new Properties()
 
    props.load(new FileInputStream("$project.rootDir/src/main/resources/configFile/config.properties"))
    props.each { prop ->
      project.ext.set(prop.key, prop.value)
    }
 println "$ProductServicesAPI_QA_URL" 
 println project.ProductServicesAPI_QA_URL
 println project.rootDir
 
dependencies {
    // This dependency is exported to consumers, that is to say found on their compile classpath.
    api 'org.apache.commons:commons-math3:3.6.1'

    // This dependency is used internally, and not exposed to consumers on their own compile classpath.
    implementation 'com.google.guava:guava:28.2-jre'

  
    implementation gradleApi()
    
    testImplementation 'io.cucumber:cucumber-java:4.8.0'
    compile group: 'io.cucumber', name: 'cucumber-jvm', version: '4.8.0'
    compile group: 'io.cucumber', name: 'cucumber-core', version: '4.8.0'
    compile group: 'io.cucumber', name: 'cucumber-testng', version: '4.8.0'
    
    implementation 'io.cucumber:cucumber-picocontainer:4.7.4'
    
      
   // implementation 'com.aventstack:extentreports:4.1.7'
    //implementation 'com.aventstack:extentreports-cucumber4-adapter:1.0.9'
    
    testCompile group: 'com.aventstack', name: 'extentreports', version: '4.1.7'
    testCompile group: 'com.aventstack', name: 'extentreports-cucumber4-adapter', version: '1.2.0'
    
    
    implementation 'io.cucumber:cucumber-gherkin:5.1.0'
    
     
     testCompile group: 'org.testng', name: 'testng', version: '6.14.3'
     
     compile group: 'log4j', name: 'log4j', version: '1.2.17'
     
     implementation 'io.rest-assured:rest-assured:3.3.0'
     implementation 'org.json:json:20180813'
     implementation 'com.googlecode.json-simple:json-simple:1.1.1'
     
     implementation 'org.apache.poi:poi-ooxml:4.1.2'
     
     compile group: 'org.seleniumhq.selenium', name: 'selenium-server', version: '3.141.59'
     implementation 'com.paulhammant:ngwebdriver:1.1.4'
     
     compile group: 'org.seleniumhq.selenium', name: 'selenium-htmlunit-driver', version: '2.52.0'
     implementation 'org.seleniumhq.selenium:selenium-java:4.0.0-alpha-4'
     
      //testImplementation 'org.hamcrest:hamcrest-all:2.2'
    
    
    
    }
    
    tasks.withType(JavaCompile) {
    options.compilerArgs += ['-Xdoclint:none', '-Xlint:none', '-nowarn']
    options.encoding = 'UTF-8'
}


    
    configurations {
    cucumberRuntime {
        extendsFrom testImplementation
    }
}
    
   


task cucumber() {
    dependsOn assemble, testClasses
    doLast {
        javaexec {
            main = "io.cucumber.core.cli.Main"
            classpath = configurations.cucumberRuntime + sourceSets.main.output + sourceSets.test.output
            
            
            args = ['--plugin', 'pretty', 
            
                    '--plugin', 'json:target/InspireBrands.json', 
                    
                    '--plugin',  'com.aventstack.extentreports.cucumber.adapter.ExtentCucumberAdapter:Report',
            
                    '--glue','com.inspire.brands.test.stepdefinition',
                    
                    'src/test/resources','src/main/java',

                    '--tags', '@Api'         
                ]
                  
        }
       
    }
  }
  
 
  
/*   
 task cucumber() {
    dependsOn assemble, testClasses
    doLast {
        javaexec {
            main = "io.cucumber.core.cli.Main"
            classpath = configurations.cucumberRuntime + sourceSets.main.output + sourceSets.test.output
            
            args = ['--plugin', 'pretty', 'json:target/InspireBrands.json', 'com.aventstack.extentreports.cucumber.adapter.ExtentCucumberAdapter:',
            
                    '--monochrome', 'true',
            
                    '--features','src\test\resources\featurefile',
            
                    '--glue','com.inspire.brands.test.stepdefinition',
                    
                    'src/test/resources','src/main/java',

                    '--tags', '@Api'         
                    ]
          
           
        }
       
    }
  }
  
  */
 
 
 /* 
tasks.test {
    finalizedBy cucumber
}
 */

尝试为每个选项重复
--plugin
关键字<代码>“--plugin”、“pretty”、“plugin”、“json:target/InspireBrands.json”、“plugin”、“com.aventstack.extentreports.cucumber.adapter.extentcumberAdapter:”我认为不应该删除json。相反,我们应该按如下所示分隔行“--plugin”、“json:target/InspireBrands.json”、“plugin”、“com.aventstack.extentreports.cucumber.adapter.extentCumberAdapter:Report”