Огуречные тесты не запускаются

Я пытаюсь использовать Cucumber для регистрации пользователя в веб-приложении, но каждый раз, когда я запускаю Registration.java в качестве теста Junit, я получаю сообщение об ошибке инициализации "java.lang.NoClassDefFoundError: io/cucumber/core/options/CucumberOptionsAnnotationParser$ Провайдер опций". Как я могу это исправить?

пом.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 https://maven.apache.org/xsd/maven-4.0.0.xsd">
   <modelVersion>4.0.0</modelVersion>
   <groupId>com.alchemy.learning</groupId>
   <artifactId>CucumberLearning</artifactId>
   <version>0.0.1-SNAPSHOT</version>
   <properties>
      <maven.compiler.source>17</maven.compiler.source>
      <maven.compiler.target>17</maven.compiler.target>
   </properties>

   <dependencies>
      <dependency>
         <groupId>info.cukes</groupId>
         <artifactId>cucumber-jvm</artifactId>
         <version>1.2.6</version>
         <type>pom</type>
      </dependency>
      <dependency>
         <groupId>info.cukes</groupId>
         <artifactId>cucumber-junit</artifactId>
         <version>1.2.6</version>
         <scope>test</scope>
      </dependency>
      <dependency>
         <groupId>info.cukes</groupId>
         <artifactId>cucumber-java</artifactId>
         <version>1.2.6</version>
         <scope>test</scope>
      </dependency>
      <dependency>
         <groupId>junit</groupId>
         <artifactId>junit</artifactId>
         <version>4.13.2</version>
         <scope>test</scope>
      </dependency>
      <dependency>
         <groupId>io.cucumber</groupId>
         <artifactId>cucumber-junit</artifactId>
         <version>7.10.0</version>
         <scope>test</scope>
      </dependency>
      <dependency>
         <groupId>io.cucumber</groupId>
         <artifactId>cucumber-jvm-deps</artifactId>
         <version>1.0.6</version>
      </dependency>
   </dependencies>
</project>

тест.функция

Feature: User Registration

  @web
  Scenario Outline: Validate Registration Field
    Given User on webapp
    When I enter username as "Mia" and password as "Mia1234"
    And I submit login page
    Then I redirect to UserHome page

    Examples: 
      | uname  | pass | 
      | Mia |   Mia1234  | 
      | admin |  admin  | 

StepDef.java

package stepdefinitions;

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

public class StepDef {
 
 @Given("^User on webapp$")
 public void user_on_webapp() throws Throwable {
  System.out.print("Webapp is open");
 }

 @When("^I enter username as \"([^\"]*)\" and password as \"([^\"]*)\"$")
 public void i_enter_username_as_and_password_as(String arg1, String arg2) throws Throwable {
  System.out.print("Enter the username and password in the fields");
 }
 
 @When("^I submit login page$")
 public void i_submit_login_page() throws Throwable {
  System.out.print("Clicked on submit button");
 }

 @Then("^I redirect to UserHome page$")
 public void i_redirect_to_user_home_page() throws Throwable {
  System.out.print("Successfully logged in");
 }
 
}

Регистрация.java

package stepdefinitions;

import org.junit.runner.RunWith;

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

@RunWith(Cucumber.class)
@CucumberOptions(features = "classpath:test.feature", glue = "stepdefinitions", plugin = {"html:target/test-report"})
public class Registration {
  
}
Стоит ли изучать PHP в 2023-2024 годах?
Стоит ли изучать PHP в 2023-2024 годах?
Привет всем, сегодня я хочу высказать свои соображения по поводу вопроса, который я уже много раз получал в своем сообществе: "Стоит ли изучать PHP в...
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Пользовательский скаляр GraphQL
Пользовательский скаляр GraphQL
Листовые узлы системы типов GraphQL называются скалярами. Достигнув скалярного типа, невозможно спуститься дальше по иерархии типов. Скалярный тип...
0
0
111
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Я заменил все зависимости в моем файле pom.xml этими зависимостями.

<dependencies>
        <dependency>
            <groupId>io.cucumber</groupId>
            <artifactId>cucumber-java</artifactId>
            <version>7.10.1</version>
        </dependency>
        <dependency>
            <groupId>io.cucumber</groupId>
            <artifactId>cucumber-junit</artifactId>
            <version>7.10.1</version>
            <scope>test</scope>
        </dependency>
        <dependency>
            <groupId>io.cucumber</groupId>
            <artifactId>cucumber-core</artifactId>
            <version>7.10.1</version>
        </dependency>
    </dependencies>

Затем я заменил операторы импорта в своем StepDef.java на

import io.cucumber.java.en.*

Наконец, в моем файле Registration.java я заменил

import cucumber.api.CucumberOptions;

с

import io.cucumber.junit.CucumberOptions;

Другие вопросы по теме