【发布时间】:2019-08-27 13:05:19
【问题描述】:
当我尝试使用 Cucumber 最新版本 4.7.1 即'io.cucumber'时, 使用范围报告 3.0 不会生成报告。我在范围报告中尝试了不同的版本,但仍然可以正确生成输出。
我尝试在 Cucumber 和 Extent Report 之间使用不同的组合版本,但仍然没有输出。有人可以在这里照亮以提高输出。
代码:
/**
* @Author: PriyadarsiniMuthuvel
* @Created date: 19-08-2019
* @Project Description: CucumberGradleProject
**/
import io.cucumber.junit.CucumberOptions;
import io.cucumber.junit.Cucumber;
import org.junit.AfterClass;
import org.junit.runner.RunWith;
import managers.FileReaderManager;
import java.io.File;
@RunWith(Cucumber.class)
@CucumberOptions(
features = "src/test/resources/SmokeSuite",
glue= {"stepDef"},
// plugin = { "pretty","html:target/cucumber-reports"},
// plugin = { "com.cucumber.listener.ExtentCucumberFormatter:target/cucumber-reports/report.html"},
// plugin = { "com.vimalselvam.cucumber.listener.ExtentCucumberFormatter:target/cucumber-reports/report.html"},
plugin = { "com.aventstack.extentreportscucumber.adapter.ExtentCucumberAdapter:target/cucumber-reports/report.html"},
monochrome = true
)
public class testrunner {
@AfterClass
public static void writeExtentReport() {
Reporter.loadXMLConfig(new File(FileReaderManager.getInstance().getConfigReader().getReportConfigPath()));
Reporter.setSystemInfo("User Name", System.getProperty("user.name"));
Reporter.setSystemInfo("Time Zone", System.getProperty("user.timezone"));
Reporter.setSystemInfo("Machine", System.getProperty ("os.name"));
Reporter.setSystemInfo("Java Version", System.getProperty ("java.version"));
}
}
控制台:
java.lang.NoClassDefFoundError: gherkin/formatter/Reporter at java.lang.ClassLoader.defineClass1(本机方法)在 java.lang.ClassLoader.defineClass(ClassLoader.java:763) 在 java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142) 在 java.net.URLClassLoader.defineClass(URLClassLoader.java:467) 在 java.net.URLClassLoader.access$100(URLClassLoader.java:73) 在 java.net.URLClassLoader$1.run(URLClassLoader.java:368) 在 java.net.URLClassLoader$1.run(URLClassLoader.java:362) 在 java.security.AccessController.doPrivileged(Native Method) 在 java.net.URLClassLoader.findClass(URLClassLoader.java:361) 在 java.lang.ClassLoader.loadClass(ClassLoader.java:424) 在 sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:335) 在 java.lang.ClassLoader.loadClass(ClassLoader.java:357) 在 com.vimalselvam.cucumber.listener.Reporter.getCurrentScenario(Reporter.java:166) 在 com.vimalselvam.cucumber.listener.Reporter.assignAuthor(Reporter.java:158) 在 stepDef.Hooks.BeforeSteps(Hooks.java:39) 在 sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method) 在 sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62) 在 sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43) 在 java.lang.reflect.Method.invoke(Method.java:498) 在 cucumber.runtime.Utils$1.call(Utils.java:26) 在 cucumber.runtime.Timeout.timeout(Timeout.java:16) 在 cucumber.runtime.Utils.invoke(Utils.java:20) 在 cucumber.runtime.java.JavaHookDefinition.execute(JavaHookDefinition.java:65) 在 cucumber.runner.HookDefinitionMatch.runStep(HookDefinitionMatch.java:16) 在 cucumber.runner.TestStep.executeStep(TestStep.java:65) 在 cucumber.runner.TestStep.run(TestStep.java:50) 在 cucumber.runner.TestCase.run(TestCase.java:42) 在 cucumber.runner.Runner.runPickle(Runner.java:50) 在 io.cucumber.junit.PickleRunners$NoStepDescriptions.run(PickleRunners.java:146) 在 io.cucumber.junit.FeatureRunner.runChild(FeatureRunner.java:68) 在 io.cucumber.junit.FeatureRunner.runChild(FeatureRunner.java:23) 在 org.junit.runners.ParentRunner$3.run(ParentRunner.java:290) 在 org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71) 在 org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288) 在 org.junit.runners.ParentRunner.access$000(ParentRunner.java:58) 在 org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268) 在 org.junit.runners.ParentRunner.run(ParentRunner.java:363) 在 io.cucumber.junit.Cucumber.runChild(Cucumber.java:142) 在 io.cucumber.junit.Cucumber.runChild(Cucumber.java:65) 在 org.junit.runners.ParentRunner$3.run(ParentRunner.java:290) 在 org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71) 在 org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288) 在 org.junit.runners.ParentRunner.access$000(ParentRunner.java:58) 在 org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268) 在 io.cucumber.junit.Cucumber$RunCucumber.evaluate(Cucumber.java:172) 在 org.junit.internal.runners.statements.RunAfters.evaluate(RunAfters.java:27) 在 org.junit.runners.ParentRunner.run(ParentRunner.java:363) 在 org.junit.runner.JUnitCore.run(JUnitCore.java:137) 在 com.intellij.junit4.JUnit4IdeaTestRunner.startRunnerWithArgs(JUnit4IdeaTestRunner.java:68) 在 com.intellij.rt.execution.junit.IdeaTestRunner$Repeater.startRunnerWithArgs(IdeaTestRunner.java:47) 在 com.intellij.rt.execution.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:242) 在 com.intellij.rt.execution.junit.JUnitStarter.main(JUnitStarter.java:70) 引起:java.lang.ClassNotFoundException: gherkin.formatter.Reporter 在 java.net.URLClassLoader.findClass(URLClassLoader.java:381) 在 java.lang.ClassLoader.loadClass(ClassLoader.java:424) 在 sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:335) 在 java.lang.ClassLoader.loadClass(ClassLoader.java:357) ... 52 更多
【问题讨论】:
-
以下依赖项用于 io.cucumber.4.7.1 的范围报告: // mvnrepository.com/artifact/com.aventstack/… compile group: 'com.aventstack', name: 'extentreports-cucumber4-adapter', version : '1.0.7' // mvnrepository.com/artifact/com.aventstack/extentreports 编译组:'com.aventstack',名称:'extentreports',版本:'3.0.2'
-
Priya,您在 pom.xml 中使用/提到的黄瓜版本和 Gherkin 版本是什么。
-
黄瓜 4.7.1。我已经分别尝试过扩展适配器和扩展报告。但它不适合我。
-
如果你正在使用范围适配器,请删除 runner 中的 AfterClass 方法。
-
嗨@Grasshopper,感谢您的信息。我在以下链接的帮助下尝试过,grasshopper.tech/824。在那篇文章中,您提到在 pom.xml 中添加系统路径。即,
com.aventstack extentreports-cucumber4-adapter 1.0.8 system D: /extentreports-cucumber4-adapter.jar
标签: java selenium cucumber extentreports