Отчет об объеме огурца с добавлением снимков экрана - java .lang.NoClassDefFoundError: gherkin / formatter / Reporter - PullRequest
0 голосов
/ 27 февраля 2020

Cucumber-Extent Reports работает без скриншотов, но когда мне нужны скриншоты в отчете Extent, я получаю следующее исключение.

Чтобы сделать Cucumber-Extent-Reports, я сделал только изменения конфигурации .. без изменений кода. Чтобы добавить скриншоты, я добавил хуки для добавления API скриншотов ниже.

pom. xml:

    <dependency>
        <groupId>com.vimalselvam</groupId>
        <artifactId>cucumber-extentsreport</artifactId>
        <version>3.1.1</version>
    </dependency>
    <dependency>
        <groupId>com.aventstack</groupId>
        <artifactId>extentreports</artifactId>
        <version>4.1.2</version>
    </dependency>
    <dependency>
        <groupId>com.aventstack</groupId>
        <artifactId>extentreports-cucumber4-adapter</artifactId>
        <version>1.0.10</version>
    </dependency>

Код бегуна:

plugin = {
                "pretty",
                "com.aventstack.extentreports.cucumber.adapter.ExtentCucumberAdapter:",
                "junit:reports/cucumber/cucumber.xml"},
        monochrome = true,
        dryRun = false)

Добавлен код для скриншотов в Hooks:

@After(order = 1)
    public void logScenarioStatusOnFinish(Scenario scenario) throws IOException {

        if (scenario.getStatus() == Status.FAILED){
            File scrFile = driver.getScreenshotAs(OutputType.FILE);
            File destinationPath = new File(screenShotsDirectoryLocation + File.separator +  scenario.getName() + "-" + scenario.getLine()+".jpg");
            FileUtils.copyFile(scrFile, destinationPath );
            Reporter.addScreenCaptureFromPath(destinationPath.toString());
        }
    }

Добавлена ​​последняя строка -> Reporter.addScreenCaptureFromPath(destinationPath.toString()); и он выдает следующие исключения.

java.lang.NoClassDefFoundError: gherkin/formatter/Reporter
    at java.lang.ClassLoader.defineClass1(Native Method)
    at java.lang.ClassLoader.defineClass(ClassLoader.java:763)
    at java.security.SecureClassLoader.defineClass(SecureClassLoader.java:142)
    at java.net.URLClassLoader.defineClass(URLClassLoader.java:468)
    at java.net.URLClassLoader.access$100(URLClassLoader.java:74)
    at java.net.URLClassLoader$1.run(URLClassLoader.java:369)
    at java.net.URLClassLoader$1.run(URLClassLoader.java:363)
    at java.security.AccessController.doPrivileged(Native Method)
    at java.net.URLClassLoader.findClass(URLClassLoader.java:362)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
    at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:349)
    at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
    at com.vimalselvam.cucumber.listener.Reporter.getCurrentStep(Reporter.java:162)
    at com.vimalselvam.cucumber.listener.Reporter.addScreenCaptureFromPath(Reporter.java:94)
    at my.com.testauto.stepdefs.Hooks.logScenarioStatusOnFinish(Hooks.java:59)
    at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
    at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
    at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
    at java.lang.reflect.Method.invoke(Method.java:498)
    at cucumber.runtime.Utils$1.call(Utils.java:26)
    at cucumber.runtime.Timeout.timeout(Timeout.java:16)
    at cucumber.runtime.Utils.invoke(Utils.java:20)
    at cucumber.runtime.java.JavaHookDefinition.execute(JavaHookDefinition.java:65)
    at cucumber.runner.HookDefinitionMatch.runStep(HookDefinitionMatch.java:16)
    at cucumber.runner.TestStep.executeStep(TestStep.java:65)
    at cucumber.runner.TestStep.run(TestStep.java:50)
    at cucumber.runner.TestCase.run(TestCase.java:50)
    at cucumber.runner.Runner.runPickle(Runner.java:50)
    at io.cucumber.junit.PickleRunners$NoStepDescriptions.run(PickleRunners.java:146)
    at io.cucumber.junit.FeatureRunner.runChild(FeatureRunner.java:68)
    at io.cucumber.junit.FeatureRunner.runChild(FeatureRunner.java:23)
    at org.junit.runners.ParentRunner$3.run(ParentRunner.java:290)
    at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71)
    at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288)
    at org.junit.runners.ParentRunner.access$000(ParentRunner.java:58)
    at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268)
    at org.junit.runners.ParentRunner.run(ParentRunner.java:363)
    at io.cucumber.junit.Cucumber.runChild(Cucumber.java:142)
    at io.cucumber.junit.Cucumber.runChild(Cucumber.java:65)
    at org.junit.runners.ParentRunner$3.run(ParentRunner.java:290)
    at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:71)
    at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:288)
    at org.junit.runners.ParentRunner.access$000(ParentRunner.java:58)
    at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:268)
    at io.cucumber.junit.Cucumber$RunCucumber.evaluate(Cucumber.java:172)
    at org.junit.runners.ParentRunner.run(ParentRunner.java:363)
    at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.run(JUnit4TestReference.java:89)
    at org.eclipse.jdt.internal.junit.runner.TestExecution.run(TestExecution.java:41)
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:542)
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:770)
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:464)
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:210)

Я использую файл ext.properties и файл экстента-отчета. xml файл.

Я пропустил какие-либо файлы JAR или какие-либо конфигурации для включения скриншоты?

Пожалуйста, посоветуйте. Заранее спасибо.

1 Ответ

0 голосов
/ 28 февраля 2020

Scenario.embed должен работать. см. пример ниже,

@After(order = 1)
    public void logScenarioStatusOnFinish(Scenario scenario) throws IOException {

        if (scenario.isFailed()){
            scenario.embed(driver.getScreenshotAs(OutputType.BYTES),"image/png");

        }
    }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...