Ошибка при запуске огурца в junit

Привет, я новичок в огуречной Java. Я пытаюсь запустить простой тест функции огурца. ниже мой файл функций, файл определения шага и файл бегуна junit. но я не могу успешно запустить тест в версии 1.1.6 cucumber-java, cucumber-junit.

Файл функций

Feature: Test if f1 feature is working
Scenario: valid scenario
Given input1 is "t"
When input2 is also "t"
Then result should be "pass"

Файл Stepdefinition

package cucumberFrameworkPractise;

import org.junit.Assert;

import cucumber.api.java.en.Given;
import cucumber.api.java.en.Then;
import cucumber.api.java.en.When;



public class CucumberStepDefinitionTest {
    String input1,input2,result;
@Given("input1 is \"([^\"]*)\"$")
public void input1(String input1)
{
    this.input1=input1;
}
@When("input2 is also \"([^\"]*)\"$")
public void input2(String input2)
{
    this.input2=input2;
}
@Then("result should be \"([^\"]*)\"$")
public void result(String result)
{
    this.result=result;
    Assert.fail();
}
}

Файл-бегун огурца

package cucumberFrameworkPractise;

import org.junit.runner.RunWith;

import cucumber.api.CucumberOptions;
import cucumber.api.junit.Cucumber;

@RunWith(Cucumber.class)
@CucumberOptions(features = "src/test/resources/cucumberFrameworkPractise", format = {
        "pretty", "html:target/cucumber-htmlreport",
"json-pretty:target/cucumber-report.json" })
public class CucumberRunner {

}

Я получаю сообщение об ошибке ниже:

java.lang.NoSuchMethodError: cucumber.runtime.RuntimeOptions.<init>(Ljava/util/List;)V
    at cucumber.runtime.RuntimeOptionsFactory.create(RuntimeOptionsFactory.java:24)
    at cucumber.api.junit.Cucumber.<init>(Cucumber.java:58)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance(NativeConstructorAccessorImpl.java:57)
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(DelegatingConstructorAccessorImpl.java:45)
    at java.lang.reflect.Constructor.newInstance(Constructor.java:526)
    at org.junit.internal.builders.AnnotatedBuilder.buildRunner(AnnotatedBuilder.java:29)
    at org.junit.internal.builders.AnnotatedBuilder.runnerForClass(AnnotatedBuilder.java:21)
    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:26)
    at org.eclipse.jdt.internal.junit4.runner.JUnit4TestReference.<init>(JUnit4TestReference.java:33)
    at org.eclipse.jdt.internal.junit4.runner.JUnit4TestClassReference.<init>(JUnit4TestClassReference.java:25)
    at org.eclipse.jdt.internal.junit4.runner.JUnit4TestLoader.createTest(JUnit4TestLoader.java:48)
    at org.eclipse.jdt.internal.junit4.runner.JUnit4TestLoader.loadTests(JUnit4TestLoader.java:38)
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:452)
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.runTests(RemoteTestRunner.java:683)
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.run(RemoteTestRunner.java:390)
    at org.eclipse.jdt.internal.junit.runner.RemoteTestRunner.main(RemoteTestRunner.java:197)

POM.xml

<project xmlns="http://maven.apache.org/POM/4.0.0" xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance" xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd">
  <modelVersion>4.0.0</modelVersion>
  <groupId>mrunal</groupId>
  <artifactId>cucumbertest</artifactId>
  <version>1.0</version>
  <build>
  <plugins>
  <plugin>
        <artifactId>maven-surefire-plugin</artifactId>
        <version>2.12.1</version>
        <executions>
          <execution>
            <id>default-test</id>
            <phase>test</phase>
            <goals>
              <goal>test</goal>
            </goals>
          </execution>
        </executions>
      </plugin>
  </plugins>
  </build>
  <dependencies>
    <dependency>
        <groupId>junit</groupId>
        <artifactId>junit</artifactId>
        <version>4.11</version>
        <scope>test</scope>
    </dependency>
    <dependency>
        <groupId>info.cukes</groupId>
        <artifactId>cucumber-java</artifactId>
        <version>1.0.14</version>
    </dependency>
    <dependency>
        <groupId>info.cukes</groupId>
        <artifactId>cucumber-junit</artifactId>
        <version>1.0.14</version>
    </dependency>
    <dependency>
        <groupId>info.cukes</groupId>
        <artifactId>cucumber-testng</artifactId>
        <version>1.1.5</version>
    </dependency>
  </dependencies>
</project>

Но когда я использую версию 1.0.14, я могу успешно запустить ее. почему это так? есть ли в версии 1.1.6 какие-то ошибки для запуска? ТИА !!!


person Mrunal Gosar    schedule 09.05.2014    source источник
comment
не могли бы вы показать свой pom.xml. Это работает с 1.1.5?   -  person Bala    schedule 09.05.2014
comment
Привет, Бала, я тоже пробовал с 1.1.5, но та же ошибка.   -  person Mrunal Gosar    schedule 09.05.2014
comment
не могли бы вы попробовать добавить cucumber-core зависимость (я использую версию 1.1.5) и посмотреть, работает ли она. У меня были проблемы с его включением, хотя в документации сказано, что он включается автоматически.   -  person Bala    schedule 09.05.2014
comment
попробуйте с 1.1.5 для cucumber-java, cucumber-junit,   -  person Bala    schedule 09.05.2014
comment
Привет, Бала, все еще та же ошибка, он не работает, он не работает при попытке создать RuntimeOptions runtimeOptions = runtimeOptionsFactory.create (); не уверен, почему это не удается. сделал то, что вы предложили. любые другие указатели. мне все еще интересно, почему он работает в более низкой версии 1.0.14   -  person Mrunal Gosar    schedule 09.05.2014
comment
Попробуй еще кое-что. Удалите Testng зависимость, но оставьте junit и посмотрите, работает ли это.   -  person Bala    schedule 09.05.2014


Ответы (6)


Ошибка означает, что cucumber.runtime.RuntimeOptions не имеет конструктора, который принимает List в качестве аргумента.

Поскольку все классы являются частью огурца, подозреваю ошибку в релизе. Запустите mvn dependency:tree и найдите в выходных данных cucumber. Убедитесь, что у вас есть только одна версия зависимости.

Если ваш путь к классам хорош, попробуйте старую версию.

Если это сработает, скачайте исходники для огурца и скомпилируйте их. А теперь работает? Если да, откройте отчет об ошибке, сообщающий проекту Cucumber, что последний выпуск скомпилирован некорректно.

person Aaron Digulla    schedule 09.05.2014
comment
где я должен сообщить об ошибке. Я обнаружил ошибку. Ошибка в том, что в классе RuntimeOptionsFactory баночки с огурцом отсутствует один оператор импорта для импорта класса RuntimeOptions. Мне просто интересно, где я должен сообщить об этой ошибке для ядра огурца? TIA - person Mrunal Gosar; 15.06.2014

Проще говоря, нам нужна такая же версия банки для огурца-ядра, огурца-явы, огурца-джунита. Чтобы решить эту проблему :)

Ошибка, которую мы получаем из-за файлов jar и соответствующей версии (не подходит для нашего JDK). Я поигрался с файлом jar - теперь проблема решена. А также может запускать и генерировать вывод.

Моя версия JDK - 1.8.0_60 JARS, junit -4.12 cucumber-java-1.2.2.jar cucumber-junit-1.2.2.jar cucumber-core-1.2.2.jar gherkin-2.12.2.jar cucumber-jvm- deps-1.0.3.jar

Примечание: java, junit, core должны быть в одной версии. Уберите ненужные банки с огурцами. Выполните отладку, установив только два (Java и Junit) jar-файла (разные версии) и попытайтесь устранить ошибку NoSuchMethod.

person Sakthi    schedule 13.06.2016
comment
В этом ответе может быть доля правды, но очень трудно понять, что вы говорите. Пожалуйста, попробуйте отредактировать и перефразировать свой ответ. - person Ross Presser; 14.06.2016

Я новичок и все еще учусь. У меня было аналогичное сообщение об ошибке инициализации бегуна огурца:

java.lang.NoSuchMethodError: cucumber.runtime.RuntimeOptionsFactory.<init>(Ljava/lang/Class;[Ljava/lang/Class;)V
    at cucumber.api.junit.Cucumber.<init>(Cucumber.java:59)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native Method)
    at sun.reflect.NativeConstructorAccessorImpl.newInstance(Unknown Source)
    at sun.reflect.DelegatingConstructorAccessorImpl.newInstance(Unknown Source)
    at java.lang.reflect.Constructor.newInstance(Unknown Source)
    at org.junit.internal.builders.AnnotatedBuilder.buildRunner(AnnotatedBuilder.java:29)
    at org.junit.internal.builders.AnnotatedBuilder.runnerForClass(AnnotatedBuilder.java:21)
    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:26)
    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)

Ссылки на библиотеки ‹= Мои банки, когда у меня возникала ошибка. Затем я заменил свой cucumber-junit-1.1.5.jar на cucumber-junit-1.2.2.jar, и теперь сообщение об ошибке устранено. Теперь я могу запустить тест на огуречный юнит. Я начал с последних jar-файлов, но, похоже, у них есть проблемы. Затем я попробовал несколько разных комбинаций. Я прочитал «практическое правило» (также упомянутое выше) о том, что три jar-файла (-core, -java и -junit) должны быть одной версии. Только после этого я смог запустить свои файлы функций и тесты junit.

Мои текущие рабочие банки:

gherkin-2.12.2
cucumber-core-1.2.2
cucumber-java-1.2.2
cucumber-junit-1.2.2
cucumber-html-0.2.3
cucumber-jvm-deps-1.0.3
hamcrest-all-1.3
junit-4.11
selenium-server-standalone-3.13.0

Надеюсь, это поможет.

person zagoo2000    schedule 13.09.2018
comment
Я могу подтвердить, что выравнивание всех вышеуказанных библиотек по версии решает проблему. - person AlexPes; 30.07.2019

Проверьте свои зависимости: все зависимости Cucumber должны быть выровнены:

<!-- https://mvnrepository.com/artifact/info.cukes/cucumber-jvm --> 
<dependency>
   <groupId>info.cukes</groupId>
   <artifactId>cucumber-jvm</artifactId>
   <version>1.2.2</version>
   <type>pom</type>
</dependency>
<!-- https://mvnrepository.com/artifact/info.cukes/cucumber-java --> 
<dependency>
   <groupId>info.cukes</groupId>
   <artifactId>cucumber-java</artifactId>
   <version>1.2.2</version>
</dependency>
<!-- https://mvnrepository.com/artifact/info.cukes/cucumber-core --> 
<dependency>
   <groupId>info.cukes</groupId>
   <artifactId>cucumber-core</artifactId>
   <version>1.2.2</version>
</dependency>
<!-- https://mvnrepository.com/artifact/info.cukes/cucumber-junit --> 
<dependency>
   <groupId>info.cukes</groupId>
   <artifactId>cucumber-junit</artifactId>
   <version>1.2.2</version>
</dependency>
<!-- https://mvnrepository.com/artifact/info.cukes/cucumber-jvm-deps --> 
<dependency>
   <groupId>info.cukes</groupId>
   <artifactId>cucumber-jvm-deps</artifactId>
   <version>1.0.3</version>
</dependency>
<!-- https://mvnrepository.com/artifact/junit/junit --> 
<dependency>
   <groupId>junit</groupId>
   <artifactId>junit</artifactId>
   <version>4.11</version>
</dependency>
person Abhinav Handa    schedule 26.06.2019

Я решил аналогичную проблему, сохранив версии cucumber-junit и cucumber-java одинаковыми.

person Abhishek Garg    schedule 30.09.2020

gherkin-2.12.2 cucumber-core-1.2.2 cucumber-java-1.2.2 cucumber-junit-1.2.2 cucumber-html-0.2.3 cucumber-jvm-deps-1.0.3 hamcrest-all-1.3 junit-4.11 Селен-сервер-автономный-3.13.0

это сработало для меня, и ошибка такого метода не устранена

person Manish    schedule 22.10.2020