Получение ошибки инициализации «NoClassDefFoundError: cucumber / runtime / io / URLOutputStream» после интеграции cucumber.adapter.ExtentCucumberAdapter - PullRequest
0 голосов
/ 16 февраля 2019

огурец V. 4.2.3 |Селен V.3.8.1 |JUnit V.4.12 |Отчет по экстентам V. 3.1.1

Я сталкиваюсь с ошибкой "java.lang.NoClassDefFoundError: cucumber / runtime / io / URLOutputStream" при интеграции "com.aventstack.extentreports.cucumber.adapter.ExtentCucumberAdapter: "под плагином в RunCuke Java-файл

package com.jacksparrow.automation.suite.runner;

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

@RunWith(Cucumber.class)
@CucumberOptions(features = "classpath:features/functional/",
                     glue = {"com.jacksparrow.automation.steps_definitions.functional" },
                     tags = { "@guest_plp" },
                   plugin = { "pretty","json:target/cucumber-json/cucumber.json",
                              "junit:target/cucumber-reports/Cucumber.xml", "html:target/cucumber-reports",
                              "com.aventstack.extentreports.cucumber.adapter.ExtentCucumberAdapter:"},
                   strict = false,
                   dryRun = false,
               monochrome = true)

public class FunctionalRunCuke {
}

Снимок экрана ошибки из Eclipse

Попытка добавить адаптер огурца экстента в POM.xml, как указано ниже -

    <dependency>
            <groupId>com.aventstack</groupId>
            <artifactId>extentreports-cucumber4-adapter</artifactId>
            <version>1.0.5</version>
        </dependency>

        <dependency>
            <groupId>com.aventstack</groupId>
            <artifactId>extentreports</artifactId>
            <version>3.1.1</version>
        </dependency>

        <dependency>
            <groupId>com.vimalselvam</groupId>
            <artifactId>cucumber-extentsreport</artifactId>
            <version>3.1.1</version>
        </dependency>

Если я удаляю "limitreports-cucumber4-adapter", то я не получаю указанную ниже ошибку времени компиляции -

    java.lang.NoClassDefFoundError: cucumber/runtime/io/URLOutputStream
        at java.lang.Class.getDeclaredConstructors0(Native Method)
        at java.lang.Class.privateGetDeclaredConstructors(Class.java:2671)
        at java.lang.Class.getConstructor0(Class.java:3075)
        at java.lang.Class.getConstructor(Class.java:1825)
        at cucumber.runtime.formatter.PluginFactory.findSingleArgConstructor(PluginFactory.java:141)
        at cucumber.runtime.formatter.PluginFactory.instantiate(PluginFactory.java:82)
        at cucumber.runtime.formatter.PluginFactory.create(PluginFactory.java:73)
        at cucumber.runtime.formatter.Plugins.createPlugins(Plugins.java:65)
        at cucumber.runtime.formatter.Plugins.<init>(Plugins.java:37)
        at cucumber.api.junit.Cucumber.<init>(Cucumber.java:94)
        at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
        at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:62)
        at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
        at java.lang.reflect.Constructor.newInstance(Constructor.java:423)
        at org.junit.internal.builders.AnnotatedBuilder.buildRunner(AnnotatedBuilder.java:104)
        at org.junit.internal.builders.AnnotatedBuilder.runnerForClass(AnnotatedBuilder.java:86)
        at org.junit.runners.model.RunnerBuilder.safeRunnerForClass(RunnerBuilder.java:59)
        at org.junit.internal.builders.AllDefaultPossibilitiesBuilder.runnerForClass(AllDefaultPossibilitiesBuilder.java:26)
        at org.junit.runners.model.RunnerBuilder.safeRunnerForClass(RunnerBuilder.java:59)
        at org.junit.internal.requests.ClassRequest.getRunner(ClassRequest.java:33)
        at org.eclipse.jdt.internal.junit4.runner.JUnit4TestLoader.createUnfilteredTest(JUnit4TestLoader.java:87)
        at org.eclipse.jdt.internal.junit4.runner.JUnit4TestLoader.createTest(JUnit4TestLoader.java:73)
        at org.eclipse.jdt.internal.junit4.runner.JUnit4TestLoader.loadTests(JUnit4TestLoader.java:46)
        at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:522)
        at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:760)
        at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:460)
        at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:206)
    Caused by: java.lang.ClassNotFoundException: cucumber.runtime.io.URLOutputStream
        at java.net.URLClassLoader.findClass(URLClassLoader.java:381)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:424)
        at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:331)
        at java.lang.ClassLoader.loadClass(ClassLoader.java:357)
        ... 27 more

Я добавил ниже зависимость в POM.xml

<!-- ********************************()() CUCUMBER & SELENIUM DEPENDENCIES ()()******************************** --> 

<dependency>
    <groupId>io.cucumber</groupId>
    <artifactId>cucumber-java</artifactId>
    <version>4.2.3</version>
</dependency>

<dependency>
    <groupId>io.cucumber</groupId>
    <artifactId>cucumber-junit</artifactId>
    <version>4.2.3</version>
    <scope>test</scope>
</dependency>

<!-- https://mvnrepository.com/artifact/junit/junit -->
<dependency>
    <groupId>junit</groupId>
    <artifactId>junit</artifactId>
    <version>4.12</version>
    <scope>test</scope>
</dependency>

<dependency>
    <groupId>io.cucumber</groupId>
    <artifactId>datatable</artifactId>
    <version>1.1.12</version>
</dependency>

<dependency>
    <groupId>io.cucumber</groupId>
    <artifactId>cucumber-testng</artifactId>
    <version>4.2.3</version>
</dependency>

<dependency>
    <groupId>io.cucumber</groupId>
    <artifactId>cucumber-picocontainer</artifactId>
    <version>4.2.3</version>
    <scope>test</scope>
</dependency>

<dependency>
    <groupId>org.seleniumhq.selenium</groupId>
    <artifactId>selenium-java</artifactId>
    <version>3.8.1</version>
</dependency>

    <dependency>
    <groupId>com.aventstack</groupId>
    <artifactId>extentreports</artifactId>
    <version>3.1.1</version>
</dependency>

<dependency>
    <groupId>com.vimalselvam</groupId>
    <artifactId>cucumber-extentsreport</artifactId>
    <version>3.1.1</version>
</dependency>

<dependency>
    <groupId>com.aventstack</groupId>
    <artifactId>extentreports-cucumber4-adapter</artifactId>
    <version>1.0.5</version>
</dependency>

Кто-то сталкивался с этой проблемой ранее.Поддерживает ли Cucumber V 4.2.3 плагин extereports-cucumber4-adapter.Если это так, то можно догадаться, что здесь не так, что вызывает эту ошибку.

Ответы [ 2 ]

0 голосов
/ 10 мая 2019

Решение уже предоставлено @Grasshopper, но в разделе комментариев.Итак, я решил поместить его в основной раздел, так как некоторые пользователи могут не просматривать все комментарии.

Эта ошибка появляется, если мы используем версию cucumber-java> v4.2.0.Итак, если вы используете самую последнюю версию, пожалуйста, понизьте ее до v4.2.0.

Для вашего понимания, вот как выглядит мой pom:

    <dependency>
        <groupId>io.cucumber</groupId>
        <artifactId>cucumber-java</artifactId>
        <version>4.2.0</version>
    </dependency>

    <dependency>
        <groupId>io.cucumber</groupId>
        <artifactId>cucumber-core</artifactId>
        <version>4.2.0</version>
    </dependency>

    <dependency>
        <groupId>io.cucumber</groupId>
        <artifactId>cucumber-junit</artifactId>
        <version>4.2.0</version>
    </dependency>
0 голосов
/ 22 февраля 2019

Проблема возникает из-за того, что вы используете ExtentReports версии 3 с адаптером огурца, который предназначен только для версии ExtentReports v4.Если удаление зависимости не решит проблему, я бы предложил поделиться вашим pom.xml.

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